go变量范围和阴影
这是GOPL中的一个例子——“表达式x[i]和x+'A'-'A'都引用了来自外部块的x声明;我们稍后将对此进行解释。” 解释永远不会出现。为什么x[i]指的是外部范围内的x?一旦在内部块中重新声明x,它就会在外部块中对x进行阴影处理。为什么这样做有效go变量范围和阴影,go,Go,这是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] i
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)
}
}
}
主程序包
输入“fmt”
func main(){
x:=“你好!”
对于i:=0;i
:=
运算符创建一个新变量,并为其分配右侧值
在for循环的第一次迭代中,在步骤x:=x[i]
中,右手边看到的唯一x
是在步骤x:=“hello!”
中定义的x
。就右侧所见,x
尚未重新声明
只要你在内部块中重新声明x
现在还没有。其仅在x:=x[i]
之后重新声明
在迭代结束时,新的x
范围结束。它不会在新的迭代中重用
当一个新的迭代发生时,同样的事情再次发生。Ah所以循环的每个迭代都是一个新的范围。