声明不赋值,类型零值,非空值,而是声明后的默认值
bool: false
integers: 0
floats: 0.0
string: ""
pointers,functions,interfaces,slices,channels,maps: nil
保留字
break case chan const continue
default defer else fallthrough for
func go goto if import
interface map package range return
select struct switch type var
变量
1.变量声明
//第一种,指定变量类型,声明后若不赋值,使用默认值
var v_name v_type
v_name = value
//第二种,根据值自行判定变量类型
var v_name = value
//第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误.
v_name := value
e.g.
var a int = 10
var b = 10
c : = 10
示例:
package main
var a = 1234
var b string = "hello"
var c bool
func main(){
println(a, b, c)
}
结果:
1234 hello false
2.多变量声明:
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断
vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误
//类型不同多个变量, 全局变量, 局部变量不能使用这种方式
var (
vname1 v_type1
vname2 v_type2
)
示例:
package main
var x, y int
var ( //这种只能出现在全局变量中,函数体内不支持
a int
b bool
)
var c, d int = 1, 2
var e, f = 123, "hello"
//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"
func main(){
g, h := 123, "hello"
println(x, y, a, b, c, d, e, f, g, h)
}
结果:
0 0 0 false 1 2 123 hello 123 hello
注意:
A.多变量赋值时,将先行计算所有左侧变量的值,再进行赋值
i := 0
i, l[i] = 1, 2









