Skip to content

常量与变量

标识符和关键字

标识符

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

关键字

Go 中有 25 个关键字:

plain
    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

变量

变量声明

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

go
var name string

其数据类型有:

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

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

go
var (
    name string
    age int
    isBoy bool
)

变量的初始化:

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

注意:

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

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

go
var name string = "Joker"

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

go
var age = 14

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

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

匿名变量

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

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

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

注意事项

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

常量

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

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

plain
const c1 = 3.14159

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

go
const (
    c1 = 3.14
    c2 = 0.68
)

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

plain
const (
	c1 = 200
	c2
	c3
)

iota

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

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

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

几种常见的用法:

(1)使用_跳过某些值

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

(2)iota声明中间插队

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

(3)定义数量级

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

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

plain
const (
		a, b = iota + 1, iota + 2 //1,2
		c, d                      //2,3
		e, f                      //3,4
	)
最近更新