合肥做网站yuanmus,超变传奇网站,基层建设期刊在哪个网站被收录,免费主机空间网站本文根据个人编码习惯以及网络上的一些文章#xff0c;整理了一些大家能用上的编码规范#xff0c;可能是一些主流方案#xff0c;但不代表官方。
1. 文件命名 由于 Windows平台文件名不区分大小写#xff0c;所以文件名应一律使用小写 不同单词之间用下划线分词#xf…本文根据个人编码习惯以及网络上的一些文章整理了一些大家能用上的编码规范可能是一些主流方案但不代表官方。
1. 文件命名 由于 Windows平台文件名不区分大小写所以文件名应一律使用小写 不同单词之间用下划线分词不要使用驼峰式命名 如果是测试文件可以以 _test.go 结尾 文件若具有平台特性应以 文件名_平台.go 命名比如 utils_ windows.goutils_linux.go可用的平台有windows, unix, posix, plan9, darwin, bsd, linux, freebsd, nacl, netbsd, openbsd, solaris, dragonfly, bsd, notbsd androidstubs 一般情况下应用的主入口应为 main.go或者以应用的全小写形式命名。比如MyBlog 的入口可以为 myblog.go
2. 常量命名 目前在网络上可以看到主要有两种风格的写法 第一种是驼峰命名法比如 appVersion 第二种使用全大写且用下划线分词比如 APP_VERSION
这两种风格没有孰好孰弱可自由选取我个人更倾向于使用第二种主要是能一眼与变量区分开来。
如果要定义多个变量请使用 括号 来组织。
const (APP_VERSION 0.1.0CONF_PATH /etc/xx.conf
)自构建的枚举类型应该从 1 开始除非从 0 开始是有意义的 eg:
// Bad
type Operation intconst (Add Operation iotaSubtractMultiply
)// Good
type Operation intconst (Add Operation iota 1SubtractMultiply
)3. 变量命名 和常量不同变量的命名开发者们的喜好就比较一致了统一使用 驼峰命名法 在相对简单的环境对象数量少、针对性强中可以将完整单词简写为单个字母例如user写为u 若该变量为 bool 类型则名称应以 Has, Is, Can 或 Allow 开头。例如isExist hasConflict 。 其他一般情况下首单词全小写其后各单词首字母大写。例如numShips 和 startDate 。 若变量中有特有名词以下列出且变量为私有则首单词还是使用全小写如 apiClient。 若变量中有特有名词以下列出但变量不是私有那首单词就要变成全大写。例如APIClientURLString 函数内使用短变量声明海象运算符 :。函数外使用长变量声明var 关键字var 关键字一般用于包级别变量声明或者函数内的零值情况。 如果有可能尽量缩小变量的作用范围。 eg:
// Bad
err : ioutil.WriteFile(name, data, 0644)
if err ! nil {return err
}
// Good
if err : ioutil.WriteFile(name, data, 0644); err ! nil {return err
}
4. 函数命名 函数名还是使用 驼峰命名法
但是有一点需要注意在 Golang 中是用大小写来控制函数的可见性因此当你需要在包外访问请使用大写字母开头
当你不需要在包外访问请使用小写字母开头
另外函数内部的参数的排列顺序也有几点原则 参数的重要程度越高应排在越前面 简单的类型应优先复杂类型 尽可能将同种类型的参数放在相邻位置则只需写一次类型
函数、方法的顺序一般需要按照依赖关系由浅入深由上至下排序即最底层的函数出现在最前面。
5.善用 gofmt 除了命名规范外Go 还有很多格式上的规范比如 使用 tab 进行缩进 一行最长不要超过 80 个字符 强制左大括号不换行。 强制所有的运算符和操作数之间要留空格。
6. 结构体定义规范 嵌入结构体中作为成员的结构体应位于结构体内的成员列表的顶部并且必须有一个空行将嵌入式成员与常规成员分隔开。
7. 工程化要求 建议你在 IDE 中集成下述工具插件
提交代码时必须使用 gofmt 工具格式化代码。注意gofmt 不识别空行因为 gofmt 不能理解空行的意义。提交代码前必须使用 goimports 工具检查导入。提交代码时必须使用 golint 工具检查代码规范。提交代码前必须使用 go vet 工具静态分析代码实现。