变量
使用var
声明变量,并初始化为零值
var i int
var a, b, c int
var (
x int
y string
)
指定初始值
var i int = 16
var a, b, c int = 1, 2, 3
var (
x int = 16
y string = "abc"
)
指定初始值时,可省略变量类型
var i = 16
var a, b ,c = 1, 2, 3
var (
x = 16
y = "abc"
)
// 或
var x, y = 16, "abc"
但 不支持 这种声明方式
var x int, y string
var x int, y string = 16, "abc"
函数内部可使用:=
声明变量
func main() {
i := 16
a, b, c := 1, 2, 3
println(i, a, b, c)
}
函数内部声明的变量,在未被引用时,会报错
func main() {
i := 16 // 报错:i declared and not used
}
占位符 _
_
仅用于占位
func ff() (int, string) {
return 16, "abc"
}
func main() {
_, s := ff()
println(s)
}
由于仅用于占位,所以多次声明也是可以的
func main() {
var _, a = 0, 16
_, b := 0, 16.0
print(a, b)
}
不能引用_
的值,否则会报错
func ff() (int, string) {
return 16, "abc"
}
func main() {
_, s := ff()
println(_, s) // 报错:cannot use _ as value
i := _ // 报错:cannot use _ as value
}
可以使用var
声明_
,但没有什么意义
func ff() (int, string) {
return 16, "abc"
}
func main() {
var _ string // 没有意义
_, s := ff() // 不会报错
println(s)
}
如果使用:=
占位,但未声明新变量会报错
func ff() (int, string) {
return 16, "abc"
}
func main() {
_ := 16 // 报错: no new variables on left side of :=
_, _ := ff() // 报错: no new variables on left side of :=
_, _ = ff() // 这样不会报错,但是也没什么意义
}
常量
使用const
声明常量
const i int = 16
const i = 16
const a, b, c int = 16, 24, 32
const a, b, c = 16, "abc", true
const (
x int = 16
y string = "abc"
)
const (
x = 16
y = "abc"
)
声明常量时,必须指定初始值,否则会报错
const i // 报错:missing value in const declaration
const i int // 报错:const declaration cannot have type without expression; missing value in const declaration
const x ,y = 16 // 报错: missing value in const declaration
// 特例
const (
x = 16
y // 取上一个变量的值 16
)
相比变量,函数内部声明的常量,在未被引用时,不会报错
func main() {
const i = 16 // 不会报错
}