我是 Go 编程语言的新手。
我注意到 Go 中有一些奇怪的地方:我认为它使用了 :=
并在 Python 中替代了 =
,但是当我使用 =
时去它也是有效的。
:=
和 =
有什么区别?
最佳答案
=
是赋值。关于 Go 中赋值的更多信息:Assignments
=
和 :=
之间的细微差别在于 =
用于变量声明的时间。
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
名字的类型由表达式的类型决定
请注意::=
是一个声明,而 =
是一个赋值
因此,简短的变量声明必须声明至少一个新变量。这意味着一个简短的变量声明不一定在其左侧声明所有变量,当其中一些变量已经在同一个词法 block 中声明时,:=
就像对那些变量的赋值变量
例如:
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”语句的初始值设定项,它们可用于声明局部临时变量。
更多信息:
关于go - := and = in Go?有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512919/