3.1 保留字
仅25个keyword
3.2 运算符
优先级:一元>二元
二元运算符:除位移操作,操作数类型必须相同,若其一无显式声明,会自动转型
位运算符
XOR:按位异或,只有一个1
AND NOT:按位清楚(bit clear)
自增
不再是运算符,只能作为独立语句,不能用于表达式
指针
内存地址是内存中每个字节单元的唯一标号,指针则是一个实体,是一个专门用来保存地址的整型变量。
- 取址:&,获取对象地址
- 指针:*,间接引用目标对象
- 二级指针:**
3.3 初始化
对复合类型变量初始化时,语法限制:
- 初始化表达式必须含类型标签
var a data = data{1, "abc"}
- 左花括号必须在类型尾部,不能另起
- 多个成员初始值以逗号分隔
- 允许多行,但每行须以逗号或右花括号结束
3.4流控制
if...else...
- 支持初始化语句,可定义块局部变量或执行初始化函数
- 保持代码块功能的单一性
switch
- 多个匹配条件命中一,即可OR
- 支持初始化语句
- default建议放到末尾
- 无需显式执行break
- fallthrough,可以贯通后续,但是不再匹配后续条件表达式
- 可用来替换if语句(没必要,难以阅读)
for
仅有for一种循环
- 初始化语句仅被执行一次
- 条件表达式中,如有函数调用,可能重复执行,最好定义局部变量保存
- for...range...完成数据迭代,其定义的局部变量会重复使用
- range会复制目标数据,比如数组,如果想修改数组,可改用数据指针或切片类型
- range目标表达式是函数调用,也仅被执行一次
goto, continue, break
- 使用goto,先定义标签,区分大小写
- break,用于switch, for, select语句,终止整个语句块执行
- for, 仅用于for循环,立即进入下一轮循环