var
功能:变量声明
声明变量并赋值。
可通过go内部的类型判断,自动推断出变量类型,即隐式类型声明
。
若不明确赋值,则会对变量赋其对应类型的默认值,即默认赋值
。
可同时对同类型的多变量同时赋值,即平行赋值
。
适用范围
可声明
全局变量
或局部变量
用法示例
var foo int = 1 //foo == 1, type: int 显式类型声明 & 显式赋值
var foo int //foo == 0, type: int 显式类型声明 & 默认赋值
var foo = 1 //foo == 1, type: int 隐式类型声明 & 显式赋值
var foo, bar int = 1, 2 //foo == 1, type: int bar == 2, type: int 平行赋值 & 显式类型声明 & 显式赋值
var foo, bar int //foo == 0, type: int bar == 0, type: int 平行赋值 & 显式类型声明 & 默认赋值
var foo, bar = 1, 2 //foo == 1, type: int bar == 2, type: int 平行赋值 & 隐式类型声明 & 显式赋值
//其他数据类型示例
type Structer struct{
A int
B string
}
var bar Structer //bar == {A:0 B:}, type: Structer 完全等价于:var bar Structer = Structer{}
:=
功能:短变量声明
声明局部变量并赋值。
不可指定变量类型。
必须显式赋值。
可同时对同类型的多变量同时赋值。
适用范围
只能于函数内部创建
局部变量
。
用法示例
func myFunc() {
foo1 := 1 //foo1 == 1, type: int 隐式类型声明 & 显式赋值
foo2, bar2 := 1, 2 //foo2 == 1, type: int bar2 == 2, type: int 平行赋值 & 隐式类型声明 & 显式赋值
//其他数据类型示例
bar3 := Structer{} //bar == {A:0 B:}, type: Structer
fmt.Println(foo1, foo2, bar2, bar3)
}
type Structer struct {
A int
B string
}