Course 1
Keyword
交叉编译:在一个平台上编译其他平台的可执行文件 静态编译:运行速度快,编译速度慢,可执行文件大 测试驱动 语法强调少即是多 天然支持并发 Duck模型的非侵入式接口:事实上实现了接口的功能,不必声明,便可以认为是接口的实现。Duck模型的非侵入式接口,具体类型不需要显示声明自己实现某个接口,判断类型是否实现接口完全交给编译器处理,侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,可读性更好。非侵入式的代码则没有过多的依赖,更灵活,可以很方便的迁移到其他地方。代码可读性比较差
常用命令
- help :显示所有的 go 命令以及相应命令功能简介
- build: 编译包和依赖 (提交阶段,打包)
- run: 编译并运行go程序 (开发阶段,调试)
- get: 下载并安装第三方包和依赖
- test: 运行测试(测试驱动)
- fmt: 格式化代码
- doc: 显示包或者符号的文档
- version:查看当前go语言版本号
基本测试
- 测试用例需要在一个名为 xxx_test.go 的文件中编写(与被测试文件同一个包)
- 测试用例文件不会参与正常源码编译,不会被包含到可执行文件中
- 测试函数的命名必须以单词 Test 开始
- 测试函数只接受一个参数 t *testing.T
- 测试用例使用go test指令来执行,无须main() 函数入口。以Test开头的函数会自动被执行。
- go test
- go test -v //显示测试的详细信息
基准测试
- 获得代码内存占用和运行效率的性能数据
- 测试函数的命名必须以单词 Benchmark 开始
- go test -bench=.
- go test -bench=. -benchmem //查看内存
Problems
1.入口文件与入口函数
可执行程序的入口文件必须是package main
,并且有入口函数main
。
2.命名法
- 大写开头的函数被认为是可导出的,只有这些函数可以被其他文件使用
Getter
方法的名称不要用Getter
。而是用字段的首字母大写,比如说owner
字段的Getter
就叫Owner()
3.分号
go在词法分析器里加入了分号的优化,不用手动写优化,事实上只有在循环或判断结构的子句中使用分号,并且,这些控制语句中大括号不能另起一行
4.空值
http://c.biancheng.net/view/4776.html
5.类型判断小技巧
fmt.printf("%T",temp)