go命令行工具
go help
代码格式化
代码质量分析与修复
单元测试与性能分析
工程构建
代码文档的提取和展示
依赖包管理
执行其他的包含命令,比如6g等
代码风格
代码必须是本着写给人阅读的原则来编写,只不过顺便给机器执行而已
go语言将代码分割强制统一,风格不符,编译器会认为是编译错误
命名
涉及变量、常量、全局函数、结构、接口、方法等命名。任何需要对外暴露的名字必须以大写字母开头,否则以小写字母开头
go语言使用骆驼命名法,不使用下划线
排列
左花括号的位置不能另起一行
else跟在右花括号后,不能另起一行
非强制建议:
以制表符缩进
添加空格
使用go fmt格式化代码文件,不指定文件则格式当前目录所有.go文件
远程import
可以import远程包
import (
"githup.com/myteam/exp/crc32"
)
但是在go build和go install之前需要执行
go get githup.com/myteam/exp/crc32
go get自动获取远程包源码,随后编译成.a
工程组织
GOPATH 多个路径以冒号分割
目录规范
<proj>
|---README
|---AUTHORS
|---<bin>
|---calc
|---<pkg>
|-<linux_amd64>
|---simplemath.a
|---<src>
|---<calc>
|---calc.go
|---<simplemath>
|---add.go
|---add_test.go
|---sqrt.go
|---sqrt_test.go
可以使用Markdown的语法来写纯文本文档,这样可以显示有格式的内容
一个标准工程包含以下目录:src、pkg和bin。src包含所有源代码是一个强制规则,pkg和bin则无需手动创建
增加名字空间只要在src下增加对应的目录
文档管理
程序员所谓的文档更多是指注视、函数、接口的输入、输出、功能和参数说明。
javadoc工具可以直接将注视提取并生成HTML格式的文档
使用go doc命令提取文档,需要满足如下基本规则:
注释需要紧贴对应的包声明和函数之前,不能有空行
注释如果需要新起一个段落,应该用一个空白注释行隔开,因为直接换行会被认为是正常段内换行
开发者可以直接用//BUG(author): 方式记录代码遗留问题
工程构建
go build 可执行程序会生成在当前目录,所以应该在bin目录下执行
go install 构建在bin目录下,如果是包则在pkg目录下
跨平台开发
交叉编译
安卓支持
adb 调试等等
单元测试
单元测试源文件的命名规则如下:需要测试的包下面创建以“_test”结尾的go文件,形如[^.]*_test.go
分为功能测试函数和性能测试函数,分别以Test和Benchmark为函数名前缀并以*testing.T为单一参数
func TestAdd1(t *testing.T)
func BenchmarkAdd1(t *testing.T)
t.Errorf()函数打印错误语句后终止测试
使用命令go test
性能测试函数内部使用for循环,可以设置定时关闭开启,消除准备工作对测试的影响
使用go test-test.bench命令
打包分发
go语言对兼容性控制非常严格,任何一个版本号不同将无法连接包
库的最佳分发方式是分发源码自己编译
可执行程序则没有这个问题,为了避免包连接问题,考虑将核心功能以二进制服务器程序提供,并辅以开源客户端SDK