Go语言仅有25个保留关键字。保留关键字不能用作常量、变量、函数名以及结构体字段等标识符
break | default | func | interface |
case | defer | go | map |
chan | else | goto | package |
const | fallthrough | if | range |
continue | for | import | return |
自增
自增、自减不再是运算符。只能作为独立语句,不能用于表达式
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
规范
对复合类型(数组、切片、字典、结构体)变量初始化时,有一些语法限制。
●初始化表达式必须含类型标签。
●左花括号必须在类型尾部,不能另起一行。
●多个成员 初始值以逗号分隔。
●允许多行,但每行须以逗号或右花括号结束
。
正确示范
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" //语法错误 必须以逗号或者右花括号结束。
}