这是 GOPL 中的一个示例 - “表达式 x[i] 和 x + 'A' - 'a' 每个都引用外部块中 x 的声明;我们稍后会对此进行解释。”
解释永远不会到来。为什么x[i]指的是外部作用域中的x?一旦您在内部块中重新声明 x,它就会遮蔽外部块中的 x。为什么这有效?
package main
import "fmt"
func main() {
x := "hello!"
for i := 0; i < len(x); i++ {
x := x[i]
if x != '!' {
x := x + 'A' - 'a'
fmt.Printf("%c", x)
}
}
}
http://play.golang.org/p/NQxfkTeGzA http://play.golang.org/p/NQxfkTeGzA
:=
运算符创建一个新变量并将右侧值分配给它。
在 for 循环的第一次迭代中,在步骤x := x[i]
, 唯一的x
右手边看到的是x
步骤中定义的x := "hello!"
。就右手边所见x
尚未重新声明。
一旦您在内部块中重新声明 x ..
It is还没有。仅在之后重新声明x := x[i]
.
在迭代结束时新的x
的范围结束。它不会在新的迭代中重用。
当新的迭代发生时,同样的事情会再次发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)