补充
命名规范
文件名
基本规范:
命名建议:
- 避免特殊字符:文件名称中不应包含特殊字符或空格,以避免潜在的兼容性问题。
- 避免过长名称:文件名称不应过长,以减少文件路径的长度,提高代码的可读性。
- 描述性名称:文件名称应具有描述性,能够清晰地反映文件的内容或用途。
与包名保持一致
在Go语言中,文件通常与包相关联。因此,文件名称应该与包名称保持一致,以体现代码的组织结构。例如,如果包名称为order,则文件名称可以是order_service.go,其中order_service是包order中的一个文件。
函数名
基本规范:
- 驼峰命名法:函数名应该使用驼峰命名法(Camel Case),即首个单词小写,后续每个单词首字母大写。例如,
getUserInfo、calculateTotal等。 - 小写字母开头:通常,函数名以小写字母开头,表示该函数是私有的,只能在当前包内访问。如果函数需要被其他包访问,即它是导出的(public),则函数名的首字母应该大写。但请注意,这只是约定俗成的做法,并非Go语言的强制规定。实际上,Go语言的可见性是通过标识符的首字母大小写来控制的,而不是通过函数名。然而,为了代码的可读性和一致性,建议遵循这一约定。
- 动词开头:函数名应该以动词开头,描述函数所执行的操作。例如,
calculate、get、set等。这有助于清晰地传达函数的意图和功能。
命名建议:
- 简洁明了:函数名应该简洁明了,避免使用冗长或难以理解的名称。尽量使用能够准确描述函数功能的单词或短语。
- 避免缩写:尽量避免使用缩写或简写作为函数名,除非这些缩写在项目中已经被广泛接受和理解。缩写可能会增加代码的阅读难度。
- 避免与标准库冲突:函数命名应避免与Go标准库中的函数名冲突,以减少潜在的混淆和错误。
- 考虑上下文:函数名应与函数所在的包和模块的上下文相关联。这有助于更好地理解函数的用途和功能。
变量名
基本规范:
- 组成元素:变量名只能由字母(A-Z,a-z)、数字(0-9)和下划线(_)组成。
- 首字母规则:变量名不能以数字开头,必须以字母或下划线开头。
- 区分大小写:Go语言是区分大小写的,因此
age和Age是两个不同的变量。 - 避免保留字:变量名不能是Go语言的保留字或关键字,如
int、float、if等。
命名建议:
- 描述性名称:变量名应具有描述性,能够清晰地表达变量的用途或含义。例如,
userAge比a更具描述性。 - 驼峰命名法:推荐使用驼峰命名法(CamelCase),即除第一个单词外,其他单词的首字母大写。例如,
firstName、lastName。对于私有变量(仅在包内可见),可以使用小写字母和下划线分隔单词,如first_name、last_name,但这不是强制性的,只是约定俗成的做法。 - 布尔变量命名:对于布尔类型的变量,建议使用
is或has开头的名称,以清晰地表示变量的布尔特性。例如,isAvailable、hasElements。 - 避免缩写:尽量避免使用缩写或简写作为变量名,除非这些缩写在项目中已经被广泛接受和理解。缩写可能会增加代码的阅读难度。
- 循环变量:在循环中,可以使用单个字母(如
i、j、k)作为临时变量的名称,但应避免与实际使用的变量名称冲突。 - 私有字段前缀:对于私有字段或方法,可以使用下划线作为名称的前缀(尽管这不是Go语言的强制规定,但在某些项目中可能作为约定使用),以表示其私有性。然而,请注意,在Go中,私有性是通过标识符的首字母大小写来控制的:小写字母开头的标识符是私有的,大写字母开头的标识符是导出的(即公共的)。
版本变化
for循环
1.22版本for循环的内容有更新。
- for range不再使用共享变量:
func main() {
var slice []int = []int{1, 2, 3, 4, 5}
for index, value := range slice {
go func() {
fmt.Printf("index:%d,value:%d \n", index, value)
}()
}
for {
}
}
- for循环开始支持整型的循环:
func main() {
for i := range 10 {
fmt.Println(i)
}
}