Go语言常量与变量初识

标识符和关键字

标识符

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

关键字

Go中有25个关键字:

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

变量

变量声明

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

var name string

其数据类型有:

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

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

var (
    name string
    age int
    isBoy bool
)

变量的初始化:

func main(){
    name = "joker"
    age = 18
    isBoy = true
}

注意:

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

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

var name string = "Joker"

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

var age = 14

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

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

匿名变量

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

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

func foo(int, string){
    return 10, "Joker"
}
func main(){
    x, _ = foo()
    _, y = foo()
}

注意事项

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

常量

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

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

const c1 = 3.14159

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

const (
    c1 = 3.14
    c2 = 0.68
)

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

const (
    c1 = 200
    c2
    c3
)

iota

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

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

const (
    n1 = iota       // n1=0
    n2              // n2=1
    n3              // n3=2
)

几种常见的用法:

(1)使用_跳过某些值

const (
        n1 = iota //0
        n2        //1
        _
        n4        //3
    )

(2)iota声明中间插队

const (
        n1 = iota //0
        n2 = 100  //100
        n3 = iota //2
        n4        //3
    )
    const n5 = iota //0

(3)定义数量级

const (
        _  = iota
        KB = 1 << (10 * iota)
        MB = 1 << (10 * iota)
        GB = 1 << (10 * iota)
        TB = 1 << (10 * iota)
        PB = 1 << (10 * iota)
    )

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

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

猜你喜欢

转载自blog.51cto.com/7834466/2478699