标识符和关键字

标识符

标识符只能以字母和_组成,并且只能以字母和_开头。

关键字

Go中有25个关键字:

  1. break default func interface select
  2. case defer go map struct
  3. chan else goto package switch
  4. const fallthrough if range type
  5. continue for import return var

变量

变量声明

变量需要先声明,再使用。其语法如下:

  1. var name string

其数据类型有:

  • string,字符串
  • int,整型
  • bool,布尔型

上面这种是一个变量一个变量的声明,go也有批量声明方式:

  1. var (
  2. name string
  3. age int
  4. isBoy bool
  5. )

变量的初始化:

  1. func main(){
  2. name = "joker"
  3. age = 18
  4. isBoy = true
  5. }

注意: Go语言中非全局变量声明了必须使用,不使用则编译不过去。

变量还可以声明的同时并赋值:

  1. var name string = "Joker"

也可以根据值来判断变量是什么类型:

  1. var age = 14

还可以用简短变量声明(只能在函数体里使用):

  1. name := "Joker"
  2. fmt.Print(name)

匿名变量

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

匿名变量用_来表示,如下:

  1. func foo(int, string){
  2. return 10, "Joker"
  3. }
  4. func main(){
  5. x, _ = foo()
  6. _, y = foo()
  7. }

注意事项

  • 函数外的每个语句都必须以关键字开头,例如var func 等;
  • :=不能使用在函数体外;
  • _ 多用于占位符,表示忽略值;
  • 同一个作用域中不能重复声明同名的变量;

常量

常量是恒定不变的值,声明常量的关键字是const

常量在定义的时候必须赋值,如下:

  1. const c1 = 3.14159

多个常量也可以一起声明,如下:

  1. const (
  2. c1 = 3.14
  3. c2 = 0.68
  4. )

在批量声明常量的时候,如果其中有一个常量没有赋值,其内容和上一个常量一样,如下c2,c3的内容也为200:

  1. const (
  2. c1 = 200
  3. c2
  4. c3
  5. )

iota

iota 是go语言中的一种常量计数器,只能在常量的表达式中使用。

iotaconst 关键字出现的时候被重置为0,const 中的变量每声明一行常量声明将使iota 计数一次,iota 可理解为是const 语句块中的行索引,使用iota 能简化定义,在定义枚举时很有用,如下:

  1. const (
  2. n1 = iota // n1=0
  3. n2 // n2=1
  4. n3 // n3=2
  5. )

几种常见的用法:

(1)使用_跳过某些值

  1. const (
  2. n1 = iota //0
  3. n2 //1
  4. _
  5. n4 //3
  6. )

(2)iota声明中间插队

  1. const (
  2. n1 = iota //0
  3. n2 = 100 //100
  4. n3 = iota //2
  5. n4 //3
  6. )
  7. const n5 = iota //0

(3)定义数量级

  1. const (
  2. _ = iota
  3. KB = 1 << (10 * iota)
  4. MB = 1 << (10 * iota)
  5. GB = 1 << (10 * iota)
  6. TB = 1 << (10 * iota)
  7. PB = 1 << (10 * iota)
  8. )

(4)、多个iota定义在一行

  1. const (
  2. a, b = iota + 1, iota + 2 //1,2
  3. c, d //2,3
  4. e, f //3,4
  5. )