go中声明和初始化的简写是
var a, b, c = 1 , 2, 3
等效于以下声明和初始化方式(根据规范)
a:=1
b:=2
c:=3
var a int
var b int
var c int
a=1
b=2
c=3
但我没有得到以下代码中发现的问题的答案:
package main
import "fmt"
func main() {
var a int = 0
var b int = 1
fmt.Println("init a ",a)
fmt.Println("init b ",b)
a, b = b, a+b
fmt.Println("printing a after `a, b = b, a+b`",a)
fmt.Println("printing b after `a, b = b, a+b`",b)
}
输出应该是:
printing a after 'a, b = b, a+b' 1
printing b after 'a, b = b, a+b' 2
由于 的值b是用a + bie 1+1= 2计算的。但它给出了 1。
这是两个工作代码的操场链接,您可以在其中观察差异。
a,b = b, a+b
a=b, b=a+b
我知道我缺少一些需要理解的东西,基本上是如何评估速记表达式,尤其是当表达式中涉及相同的变量时。
但是在哪里可以参考适当的文档。有人可以帮忙吗?
米脂
相关分类