一尘不染

Go中的:=和=有什么区别?

go

我是Go编程语言的新手。

我注意到Go中有一些奇怪的地方:我认为它在Python中使用:=并替代=了,但是当我=在Go中使用时,它也是可行的。

:=和之间有什么区别=


阅读 252

收藏
2020-07-02

共1个答案

一尘不染

=是分配。有关Go中分配的更多信息:分配

=和在变量声明中使用:=时的细微差别=

Go中变量声明的一般形式是:

var name type = expression

上面的声明创建一个特定类型的变量,为其添加名称,并设置其初始值。 无论是type= expression可以省略,但不能同时使用。

例如:

var x int = 1
var a int
var b, c, d = 3.14, "stackoverflow", true

:=被称为short variable declaration采取形式

name := expression

名称的类型取决于表达式的类型

请注意: := 是声明,而是=赋值

因此,简短的变量声明必须声明 至少一个新变量
。这意味着简短的变量声明并不一定要在其左侧声明所有变量,当其中一些变量已在同一词法块中声明后,:=就像对这些变量的赋值一样

例如:

 r := foo()   // ok, declare a new variable r
 r, m := bar()   // ok, declare a new variable m and assign r a new value
 r, m := bar2()  //compile error: no new variables

此外,:=可能仅出现在函数内部。在某些情况下,例如“ if”,“ for”或“ switch”语句的初始化程序,它们可用于声明局部临时变量。

更多信息:

变量声明

简短的变量声明

2020-07-02