命名原则
- 简单且一致
- 利用上下文辅助命名
包名
- 一般建议小写形式的单个单词命名。
- 尽量保持与包导入路径的最后一部分保持一致,尽量意味着可以不保持一致,比如:
go-nsq
的路径为go-nsq
, 包名为nsq
。
变量、类型、函数和方法
- 采用驼峰命名
CamelCase
。 - 首字母大写表示导出。
- 不应该有包名的前缀,应为导出的变量都需要使用
package.Export
的方式引用。 - 专用的缩写词应该保持大写,比如:
HTTP
。 - 名称中不应该带有类型信息。
- 对于上下文明确的变量可以使用简短命名,比如:
i
,k
。 - 常量不需要可以的大写。
接口
对于接口类型优先以单个单词命名。对于拥有唯一方法(method)或通过多个拥有唯一方法的接口组合而成的接口,Go 语言的惯例是用“方法名+er”命名。
// $GOROOT/src/io/io.go
type Writer interface {
Write(p []byte) (n int, err error)
}
type Reader interface {
Read(p []byte) (n int, err error)
}
type Closer interface {
Close() error
}
type ReadWriteCloser interface {
Reader
Writer
Closer
}