规则
Go
中函数、变量、常量、类型、语句标签和包的名称遵循以下规则:
-
由字符、数字、下划线等组成,以字符或下划线开头,不能以数字开头;
-
大小写敏感,如
name
和Name
是不同的名称; -
一般采用驼峰命名法(camel case),而不采用蛇形命名法(snake case),如一般写作
fileName
,而不采用file_name
; -
包名总是由小写字母组成;
关键字
Go
由25个关键字,如下:
break | default | func | interface | select |
---|---|---|---|---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
此外,还有一些内置的常量、类型和函数:
-
常量:
-
true
、false
、iota
、nil
-
-
类型:
-
int
、int8
、int16
、int32
、int64
-
uint
、uint8
、uint16
、uint32
、uint64
、uintptr
-
float32
、float64
、complex64
、complex128
-
bool
、byte
、rune
、string
、error
-
-
函数:
-
make
、len
、cap
、new
、append
、copy
、close
、delete
-
complex
、real
、imag
-
panic
、recover
-
有效范围
如果一个名称只在函数中声明,则它只在函数内有效;如果声明在函数外,则它将对包里面的所有源文件可见。
名称的首字母的大小写决定其可见性是否跨包,如果名称以大写字母开头,则它是可导出的,对包外是可见和可访问的,类似于java
中的public
,可被自己包之外的其他程序所引用;如果名称以小写字母开头,则它仅能在自己包内引用,类似java
中的protected
;
名称本身没有长度限制,但是Go
倾向于使用短名称,尤其是作用域较小的局部变量。通常,名称的作用域越大,就使用越长且更有意义的名称。
风格上,当遇到由单词组合的名称时,Go
程序员一般采用驼峰式而不采用蛇形命名法。而像ASCII
和HTML
这样的首字母缩写词通常使用相同的大小写,如一个函数可以命名为htmlEscape
、HTMLEscape
或escapeHTML
,而不采用escapeHtml
。