不多见人总结一些命名规范,也多是笔者孤陋寡闻, 做为一个两年的golang 开发者, 我根据不少知名的项目,如 moby
, kubernetess
等总结了一些常见的命名规范。 命名规范可使得代码更容易与阅读, 更少的出现错误。git
若有不一样意见欢迎吐槽、讨论。 项目地址github
因为文件跟包无任何关系, 而又避免windows大小写的问题,因此推荐的明明规范以下: 文件名应一概使用小写, 不一样单词之间用下划线分割, 命名应尽量地见名知意golang
常量明明用 camelcase来命名示例以下windows
const todayNews = "Hello"
复制代码
// 若是超过了一个常量应该用括号的方法来组织函数
const (
systemName = "What"
sysVal = "dasdsada"
)
复制代码
与常量命名方式同样,变量也应该使用驼峰的命名方式, 但注意尽可能不与包名一致或者以包名开头性能
var x string
x := new(string)
复制代码
因为Golang的特殊性(用大小写来控制函数的可见性),除特殊的性能测试与单元测试函数以外, 都应该遵循以下原则单元测试
一个典型的函数命名方法以下:测试
// 注释一概使用双斜线, 对象暴露的方法
func (*fileDao) AddFile(file *model.File) bool {
result := db.NewRecord(*file)
if result {
db.Create(file)
}
return result
}
// 不须要给包外访问的函数以下
func removeCommaAndQuote(content string) string {
re, _ := regexp.Compile("[\\`\\,]+")
return strings.TrimSpace(re.ReplaceAllString(content, ""))
}
复制代码
接口命名也是要遵循驼峰方式命名, 能够用 type alias 来定义大写开头的type 给包外访问ui
type helloWorld interface {
func Hello(); } type SayHello helloWorld 复制代码
与接口命名规范相似this
golang 中存在receiver 的概念 receiver 名称应该尽可能保持一致, 避免this, super,等其余语言的一些语义关键字以下
type A struct{}
func (a *A) methodA() {
}
func (a *A) methodB() {
a.methodA()
}
复制代码
注释应一概使用双斜线
格式化, 用tab不是空格, 能够与go fmt 兼容