变量定义
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