为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
jeck猫 2021-11-08 18:28:28
我在http://tour.golang.org/上尝试 Go ,我看到可以使用 := 在 for 循环中声明两次相同的 var。输出与 Go 编译器相同。这是我的测试:(参见 var i,它被声明了两次)package mainimport "fmt"func main() {    i := "Hello"    a := 0    for a < 2 {        fmt.Println(i)        i := "World !"        fmt.Println(i)        a++    }       }输出 :你好世界 !你好世界 !有人可以解释一下吗?
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

短变量声明 i :=  ...将掩盖相同的变量声明的范围之外的for

每个“ if”、“ for”和“ switch”语句都被认为是在它自己的隐式块中

你可以看到更多的“围棋疑难杂症#1:由于使用的内部范围内可变遮蔽:=操作

它指的是这个goNuts 讨论

简短的变量声明可以在块内重新声明相同的变量,但由于i也在for 块之外声明,因此它将其值保留在所述块之外(不同的作用域)。


查看完整回答
反对 回复 2021-11-08
?
皈依舞

TA贡献1851条经验 获得超3个赞

第一个 i 已在主函数的大括号 ({}) 内定义,而第二个 i 在 for 循环的范围内声明。名称相同,但范围不同。


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信