Go 中的同时变量赋值不同于单个变量赋值

我的印象是,尽管语法不同,但下面的函数 a 和函数 b 在逻辑上是等效的。但是,它们不是,我不明白它们之间的区别。

在我看来,他们都在分配:

  • x 对变量 z 的值,

  • 变量 x 的 y 值,以及

  • 变量 y 的 x+y 值。

任何人都可以帮助澄清我对多变量赋值以及函数 a 和函数 b 之间的逻辑差异的误解吗?


墨色风雨
浏览 107回答 1
1回答

一只萌萌小番薯

package mainimport "fmt"func a() (int, int, int) {    x:=1    y:=2    z:=3    z = x    x = y    y = x+y    return x, y, z}func b() (int, int, int) {    x:=1    y:=2    z:=3    z, x, y = x, y, x+y    return x, y, z}func main() {    fmt.Println(a()) // prints 2 4 1    fmt.Println(b()) // prints 2 3 1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go