一、变量声明
因为go语言是静态类型语言。编译期间做检车数据类型,即写程序时要生命所有变量类型。使用数据之前必须声明数据类型。
- 以下两种变量定义方法都在编译程序之前声明了数据类型。
var x int // 自动化初始为0
var y = false //自动推断为bool类型。
- 可以一次定义多个变量,
var x,y int
var a,s = 100, "abc"
- 可以以小组方式定义多行变量
var (
x, y int
a, s = 100, "abc"
)
- 简短方法变量声明
fun main(){
x :=100
a, s :=1, "abc"
}
简短方法变量赋值错误, 本来准本修改全局变量x,却创建了一个局部变量x
错误的变量赋值方法:
var x = 100
func main(){
println(&x,x)
x := "abc"
println(&x,x)
}
简短方法也可能退化赋值
错误的退化赋值方法方法1:
func main(){
x := 100
println(&x)
x :=200
println(&x,x) // 错误 要想退化赋值需要有一个新的变量被赋值
}
错误的退化赋值方法2:
func main(){
x := 100
println(&x,x)
{
x, y = 200, 300
println(&x, x, y)
}
}
正确退化赋值方法:
func main(){
x := 100
println(&x)
x, y = 200, "abc"
println(x,y)
}
- 多变量赋值
func main(){
x, y = 1, 2
x, y = y+3, x+2
println(x,y)
}
- 局部变量赋值未使用是错误的
var x int
func main(){
y := 10
}
二、常量
常量也可以在函数中定义,不使用不会引发编译错误。
但是常量显式指定类型后左右类型要一致而且不能溢出。
常量值可以是函数的返回值。
在常量组中也可以只声明,默认赋值为上一行非空右值。
常量表示运行时恒定不能改变的值。
const x,y int = 123, 0x22
const s = "Hello World!"
const c = "我"
const {
i, f = 1, 0.123
b = false
}
三、枚举类型
iota 可以实现自增
const (
x = iota // 0
y // 1
z // 2
)
const (
_, _ = iota, iota*10
a, b
c, d
)
const (
a = iota
b
c = 100
d
e = iota
f
)