我在看实战视频的时候,发现有的时候使用 =
进行赋值,有的时候使用 :=
进行赋值。我不理解啥时候使用哪个,下面是解析。
:=
和=
的区别
查阅资料过后发现 :=
的意思是声明+赋值,=
的意思是赋值。
a := 1
// 等同于下面2行
var a int
a = 1
比如 hello := 1
这里就是声明了一个int型的变量hello
,且它的值是1
至于为什么是int型?
go可在变量的初始化时省略变量的类型而由系统自动推断
比如这里
a := 5
或 b := false
。
a
和 b
的类型(int
和 bool
)将由编译器自动推断。
注意点
:=
是使用变量的首选形式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值。使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明。
import "fmt"
func main() {
a := 2
b := false
fmt.Println(&a)
fmt.Println(&b)
}
上述代码输出的结果如下
0xc000016098
0xc0000160b0
=
的意思是赋值,一般会在声明全局变量的时候使用。它会将地址拷贝一份,也就是说a=b
,这里a
和b
的地址不一致。可以通过&
来获取一个变量的地址。
func main() {
a := 2
c := a
fmt.Println(&a)
fmt.Println(&c)
}
上述代码段输出如下
0xc0000aa058
0xc0000aa070
这里可以看到 通过=
的地址不会一致