go中声明和初始化的简写是
var a, b, c = 1 , 2, 3
Run Code Online (Sandbox Code Playgroud)
相当于以下声明和初始化方式(根据规格)
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)
}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
printing a after 'a, b = b, a+b' 1
printing b after 'a, b = b, a+b' 2
Run Code Online (Sandbox Code Playgroud)
由于b使用a + bie 1+1= 2 评估值,但它给出1.
这是工作代码的操场链接,您可以在其中观察差异.
我知道我遗漏了一些要理解的东西,基本上是如何评估简写表达式,特别是当表达式中涉及相同的变量时.
但是哪里有适当的文件可供参考.有人可以帮忙吗?