Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字。
Go语言中二十五个关键字和三十几个预定义标识符,关键字不能用于自定义名字,只能在特定语法结构中使用;预定义标识符主要应对内建常量、类型和函数。这些内部预先定义的标识符并不是关键字,你可以在定义中重新使用它们。在一些特殊的场景中重新定义它们也是有意义的,但是也要注意避免过度而引起语义混乱。
关键字:
break //退出当前循环或者switch语句等
continue //跳过本次循环
return //返回
default //选择结构默认项(switch、select)
switch //选择结构
case //选择结构标签
fallthrough //用于标明执行完当前 case 语句之后按顺序执行下一个case语句
if //选择结构
else //选择结构
goto //跳转语句
select //channel
struct //定义结构体
var //定义变量
type //定义类型
map //map类型
chan //定义channel
const //常量
for //循环
range //从引用类型中遍历元素
func //定义函数
interface //定义接口
defer //延迟执行内容,可用于最后清理资源等
go //并发执行
package //包
import //导入包
预定义标识符:
内建常量: true false iota nil
内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune
string error
内建函数: make len cap new append copy close delete complex real imag panic recover
名字的长度没有逻辑限制,但是Go语言的风格是尽量使用短小的名字,对于局部变量尤其是这样。通常来说,如果一个名字的作用域比较大,生命周期也比较长,那么用长的名字将会更有意义。
在习惯上,Go语言程序员推荐使用驼峰式命名,当名字有几个单词组成的时优先使用大小写分隔,而不是优先用下划线分隔。因此,在标准库有QuoteRuneToASCII和parseRequestLine这样的函数命名,但是一般不会用quote_rune_to_ASCII和parse_request_line这样的命名。而像ASCII和HTML这样的缩略词则避免使用大小写混合的写法,它们可能被称为htmlEscape、HTMLEscape或escapeHTML,但不会是escapeHtml。