3.1 保留字
Go语言仅有25个保留关键字。保留关键字不能用作常量、变量、函数名以及结构体字段等标识符
break | default | func | interface |
case | defer | go | map |
chan | else | goto | package |
const | fallthrough | if | range |
continue | for | import | return |
3.2 运算符
-
自增
自增、自减不再是运算符。只能作为独立语句,不能用于表达式func main() { a := 1 ++a // 错误语法: 不能前置 if (a++) > 1 //错误语法 :不能作为表达式 a ++ //正确语法 println(a) }
-
指针
不能讲内存地址与指针混为一谈。
内存地址是内存中每一个字节单元的唯一编号。
指针是一个实体。指针会分配内存空间,相当于一个专门用来保存用来保存地址的整型变量。x :=100 p := &x memmory 100 0x1200 address 0x1200 0x800
- 取地址运算符
&
用于获取对象的地址 - 指针运算法
*
用于间接引用目标对象
func main() { x := 10 println(x,&x) var p *int = &x // 获取x的地址,保存到指针变量 *p += 20 //用指针间接引用,并更新对象 println(p, *p) println(x,&x) } //运行结果 10 0xc000056c88 0xc000056c88 30 30 0xc000056c88
- 取地址运算符
3.3 初始化
-
规范
对复合类型(数组、切片、字典、结构体)变量初始化时,有一些语法限制。
●初始化表达式必须含类型标签。
●左花括号必须在类型尾部,不能另起一行。
●多个成员 初始值以逗号分隔。
●允许多行,但每行须以逗号或右花括号结束
。正确示范
type data struct { x int s string } var a data = data(1, "abc") b := data { 1, "abc", } c := []int{1,2,3} d := []int{ 1, 2, } e := []int{ 1, 2}
错误示范
var d data = {1, "abc"} //语法错误 缺乏类型标签 d := data { // 语法错误 左花括号不能另起一行 1, "abc" } d := data{ 1, "abc" //语法错误 必须以逗号或者右花括号结束。 }