变量和常量


变量定义

Go中定义一个变量的方法为var 名称 类型 ,定义后的值默认都为对应的零值

package main

import "fmt"

func main() {
 var x int = 1 //定义的时候赋值
 var y int     //定义的时候不赋值
 y = 1
 fmt.Print(x, y) //1 1
 var a, b, c int = 1, 0, 0 //必须写出对应的值
 fmt.Print(a, b, c)
}

注意 在Go中,如果变量被定义却没被使用是不能通过编译的

类型推导

也可以使用类型推导,省略最后的类型,默认会使用精度高的。

package main

import "fmt"

func main() {
 var a = "Hello"
 var b = 1
 fmt.Printf("%T,%T", a, b) //string,int
}

短变量声明

在函数中还能使用:=来进一步缩减代码

package main

import "fmt"

func main() {
 x := 1
 y := "world"
 fmt.Print(x, y) //1world%
}

批量声明

还可以使用var ()来批量声明

package main

import "fmt"

func main() {
 var (
  a, b, c int
 )
 fmt.Print(a, b, c)//0 0 0
}

匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

func fun() (int, int) {
 return 1,2
}
func main() {
 x, _ := fun()
 _, y := fun()
 fmt.Println("x=", x)
 fmt.Println("y=", y)
}

使用匿名变量是为了占位(Go中变量定义了变量必须使用,但是有时候只需要多返回函数返回值中的一部分)

常量定义

常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。

批量声明

使用批量声明时,如果缺省则为上一行的右值

package main

import "fmt"

// const a int  //Wrong
const a int = 1
const (
 b = 1 //此行不能为空
 c
 d
)

func main() {
 fmt.Println(a, b, c, d)
}

iota

iota是go语言的常量计数器,只能在常量的表达式中使用。遇到const被初始化为0,每多一行数值+1。

const (
 a, b = iota, iota
 c, d
 e, f
)//0,0,1,1,2,2

文章作者: ffacs
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ffacs !
  目录