gpt4 book ai didi

go - 在 for 循环内创建新变量时多变量短重新声明?

转载 作者:IT王子 更新时间:2023-10-29 01:02:04 26 4
gpt4 key购买 nike

documenation状态:

As a consequence, redeclaration can only appear in a multi-variable short declaration. Redeclaration does not introduce a new variable; it just assigns a new value to the original.

但这在 for 循环中是如何工作的呢? See this example .似乎变量“nextPos”在循环外有一个范围,实际上在循环内为内部范围重新声明,因此在每次迭代中都失去了它的值。 This版本虽然有效。

最佳答案

让我们用这些代码示例展示它是如何工作的:

让我们简化您的第一个示例,请参阅此工作示例代码 (1):

package main

import "fmt"

func main() {
a := 100
{
fmt.Println(a) // 100
a, b := 0, 0
fmt.Println(a, b) // 0 0
}
fmt.Println(a) // 100
}

输出:

100
0 0
100

所以 a, b := 0, 0 中的 ashadowed,这个 a 是新变量,
这称为变量作用域和阴影,
您可以将其命名为例如c 暂时点赞这段代码以展示其工作原理 (2):

package main

import "fmt"

func main() {
a := 100
{
fmt.Println(a) // 100
c, b := 0, 0
fmt.Println(c, b) // 0 0
}
fmt.Println(a) // 100
}

输出与(1)相同:

100
0 0
100

让我们简化您的下一个示例代码 (3):

package main

import "fmt"

func main() {
a := 0
b := byte(0)
{
fmt.Println(a, b) // 0 0
a, b = 1, byte(1)
fmt.Println(a, b) // 1 1
}
fmt.Println(a, b) // 1 1
}

输出:

0 0
1 1
1 1

所以这里的ab是相同的内外循环。

另见:Where can we use Variable Scoping and Shadowing in Go?
看看: What is the difference between := and = in Go?

关于go - 在 for 循环内创建新变量时多变量短重新声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38759918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com