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

去可变范围和阴影

去可变范围和阴影

Go
明月笑刀无情 2021-11-22 10:27:22
这是来自 GOPL 的一个例子——“表达式 x[i] 和 x + 'A' - 'a' 每个都指代来自外部块的 x 声明;我们稍后会解释这一点。”解释永远不会到来。为什么 x[i] 指的是外部作用域中的 x?一旦您在内部块中重新声明 x,它就会遮住外部块中的 x。为什么这样做?package mainimport "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
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

:= 运算符创建一个新变量并为其分配右侧值。

在 for 循环的第一次迭代中,在 step 中x := x[i],唯一x右侧看到的是xstep 中定义的x := "hello!"。就右手边所见x,尚未重新声明。

一旦您在内部块中重新声明 x ..

目前还没有。它仅在 之后重新声明x := x[i]

在迭代结束时, newx的作用域结束。它不会在新的迭代中重用。

当新的迭代发生时,它会再次发生同样的事情。


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

添加回答

举报

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