为什么可以使用 for 循环两次声明相同的 var ?

我在http://tour.golang.org/上尝试 Go ,我看到可以使用 := 在 for 循环中声明两次相同的 var。输出与 Go 编译器相同。


这是我的测试:(参见 var i,它被声明了两次)


package main


import "fmt"


func main() {

    i := "Hello"

    a := 0

    for a < 2 {

        fmt.Println(i)

        i := "World !"

        fmt.Println(i)

        a++

    }       

}

输出 :

你好

世界 !

你好

世界 !

有人可以解释一下吗?


jeck猫
浏览 268回答 2
2回答

偶然的你

的短变量声明&nbsp;i := &nbsp;...将掩盖相同的变量声明的范围之外的for环块。每个“&nbsp;if”、“&nbsp;for”和“&nbsp;switch”语句都被认为是在它自己的隐式块中你可以看到更多的“围棋疑难杂症#1:由于使用的内部范围内可变遮蔽:=操作”它指的是这个goNuts 讨论。简短的变量声明可以在块内重新声明相同的变量,但由于i也在for 块之外声明,因此它将其值保留在所述块之外(不同的作用域)。

皈依舞

第一个 i 已在主函数的大括号 ({}) 内定义,而第二个 i 在 for 循环的范围内声明。名称相同,但范围不同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go