命名原则

  1. 简单且一致
  2. 利用上下文辅助命名

包名

  1. 一般建议小写形式的单个单词命名。
  2. 尽量保持与包导入路径的最后一部分保持一致,尽量意味着可以不保持一致,比如:go-nsq 的路径为 go-nsq, 包名为 nsq

变量、类型、函数和方法

  1. 采用驼峰命名 CamelCase
  2. 首字母大写表示导出。
  3. 不应该有包名的前缀,应为导出的变量都需要使用 package.Export 的方式引用。
  4. 专用的缩写词应该保持大写,比如:HTTP
  5. 名称中不应该带有类型信息。
  6. 对于上下文明确的变量可以使用简短命名,比如: i, k
  7. 常量不需要可以的大写。

接口

对于接口类型优先以单个单词命名。对于拥有唯一方法(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
}