一 标识符
1.1 关键字
Go现在拥有25个关键字:
if for func case struct import go type chan defer default package map const else break select interface var goto range return switch continue fallthrough
1.2 保留字
内建常量: 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 delete complex panic append copy close len cap real imag new recover
二 变量
2.1 变量声明
Go变量声明的三种方式:
var a int // 声明一个变量,默认为0 var b = 10 // 声明并初始化,且自动推导类型 c := 20 // 初始化,且自动推导
注意:
- `:=`定义变量只能在函数内部使用,所以经常用var定义全局变量
- Go对已经声明但未使用的变量会在编译阶段报错:`** not used`
- Go中的标识符以字母或者下划线开头,大小写敏感
- Go推荐使用驼峰命名
2.2 多变量声明
var a,b string var a1,b1 string = "哼","哈" var a2,b2 int = 1,2 //类型可以直接省略 c,d := 1,2 var( e int f bool )
2.3 变量值互换
m,n = n,m //变量值互换 temp,_ = m,n //匿名变量:变量值互换,且丢弃变量n
2.4 _丢弃变量
`_`是个特殊的变量名,任何赋予它的值都会被丢弃。该变量不占用命名空间,也不会分配内存。
_, b := 34, 35 //将值`35`赋予`b`,并同时丢弃`34`:
#### 2.5 := 声明的注意事项
下面是正确的代码示例:
in, err := os.Open(file) out, err := os.Create(file) // err已经在上方定义,此处的 err其实是赋值
但是如果在第二行赋值的变量名全部和第一行一致,则编译不通过:
in, err := os.Open(file) in, err := os.Create(file) // 即 := 必须确保至少有一个变量是用于声明
`:=`只有对已经在同级词法域声明过的变量才和赋值操作语句等价,如果变量是在外部词法域声明的,那么`:=`将会在当前词法域重新声明一个新的变量。
2.6 多数据分组书写
Go可以使用该方式声明多个数据:
const( i = 100 pi = 3.1415 prefix = "Go_" ) var( i int pi float32 prefix string )
三 关键字iota
关键字iota声明初始值为0,每行递增1:
const ( a = iota // 0 b = iota // 1 c = iota // 2 ) const ( d = iota // 0 e // 1 f // 2 ) //如果iota在同一行,则值都一样 const ( g = iota //0 h,i,j = iota,iota,iota // 1,1,1 // k = 3 // 此处不能定义缺省常量,会编译错误 )
本文地址:https://www.stayed.cn/item/286
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我