样式规范
Go 编码规范
格式
使用 gofmt
命令对源文件格式化。gofmt
格式化细节如下。
- 缩进
使用
tab 缩进。gofmt 命令默认使用它。除非有特殊需求,否则不要使用space 缩进代码。 - 行的长度
Go 对行的长度没有限制。可以换行,并插入适当的tab 缩进。 - 括号
比起
C 和Java ,Go 所需要的括号更好:控制结构(if、for 和switch )在语法上并不需要括号。
注释
文档注释
出现在顶级声明之前,并且也该声明之间没有空行的注释,即文档注释。 每个包都应该包含包注释。对于包含多个文件的包,包注释只需出现在其中任一文件中。 如果文档较为复杂,使用块注释。如果较为简单,则使用行注释。
/*
balabala
ge get -u github.com/foo/bar
sample code
func main() {
fmt.Println("hello world")
}
Head
content http://www.google.com
*/
package somepkg
文档注释生成
- 所有非空行,解释为段落
- 带缩进的内容,将装入
标签,一般用于样例代码
url 自动解释为标签- 首字母大写并且不是以“
.
”结尾的的非空行,如果紧跟一个段落,将解释为
每个非
命名
正如命名在其它语言中的地位,它在
包名
当一个包被引入之后,包中的导出内容,都将通过包名访问。因此包应当有个恰当的名称。包名应该简洁明了而且易于理解。按照惯例,包应当以小写的单个单词来命名,且不应使用下划线或驼峰记法。
在导入包时,可以通过添加别名的方式,避免包名冲突。请勿使用import .
记法,它可以简化必须在被测试包外运行的测试,除此之外应尽量避免使用。
Getters
owner := obj.Owner()
if owner != user {
obj.SetOwner(user)
}
接口名
按照约定,只包含一个方法的接口应当以该方法的名称加上 -er
后缀来命名,如
诸如此类的命名有很多,遵循它们及其代表的函数名会让事情变得简单。Read、Write、Close、Flush、String
而非 ToString
。
驼峰记法
MixedCaps
或mixedCaps
而非下划线的方式来对多单词名称进行命名。
大写开头表示导出内容(public