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。