参考文献:Go语言规范
1 词法元素(Lexical elements)
1.1 注释(Comments)
-
行注释开始于 // ,结束于此行 -
块注释开始于 /* ,结束于第一个 */ 序列
不能开始于rune、string字面量、注释内,无换行的注释相当于空格,有换行的注释相当于新行
1.2 标记(Tokens)
- 标识符(identifiers)
- 关键字(Keywords)
- 运算符和标点(Operators and punctuation)
- 字面量(literals)
1.3 分号(Semicolons)
终止符,golang根据下列规则省略
-
词法分析时,在一行最后一个标记后自动插入分号
- 标识符
- 字面量
- 关键字break, continue, fallthrough, return
- 运算符和标点++, --, ), ], }
-
允许复杂语句只占一行, 在闭合的 ) 或 }前可以省略分号
2 常量(Constants)
常量运行过程中值不变的存储位置。包括字面量、表示常量的标识符、常量表达式、结果为常量的类型转换或一些内置函数(例如unsafe)的结果值。可以有类型或无类型(字面量、false、true),但是无类型常量具有默认类型,即在需要类型化值的上下文中常量隐式转换为的类型,例如,在没有显式类型的短变量声明中,如 i := 0。无类型常量的默认类型分别为 bool、rune、int、float64、complex128 或 string。
3 变量(Variables)
变量是用于保存值的存储位置,允许值的集合由变量的类型决定。
4 类型(Types)
类型确定一组值以及特定于这些值的操作和方法。
- 布尔类型Boolean types:布尔类型表示由预先声明的常量 true 和 false 表示的布尔真值集。
- 数值类型Numeric types:整数、浮点数或复数类型分别表示整数、浮点数或复数值的集合,统称为数值类型。
- 字符串类型String types:字符串类型表示字符串值的集合。字符串值是一个(可能为空的)字节序列。
- 数组类型Array types:数组是单一类型(元素类型)元素的编号序列。
- 切片类型Slice types:切片是底层数组的连续段的描述符,并提供对该数组中编号的元素序列的访问。切片类型表示其元素类型的数组的所有切片的集合。
- 结构体类型Struct types:结构是一系列命名元素(字段),每个元素都有一个名称和一个类型。
- 指针类型Pointer types:指针类型表示指向给定类型(指针的基类型)变量的所有指针的集合。未初始化指针的值为 nil。
- 函数类型Function types:函数类型表示具有相同参数和结果类型的所有函数的集合。函数类型的未初始化变量的值为 nil。
- 接口类型Interface types:接口类型定义类型集。接口类型的变量可以存储接口类型集中的任何类型的值。这种类型可以实现接口。接口类型的非初始化变量的值为零。
- 字典类型Map types:字典是一种类型(元素类型)的无序元素组,由一组另一种类型(健类型)的唯一键索引。未初始化映射的值为 nil。
- 通道类型Channel types:通道提供了一种机制,用于并发执行函数以通过发送和接收指定元素类型的值进行通信。未初始化通道的值为 nil。