资料内容:
这看起来像是⼜声明了 d 和 err 。但是,注意
err 在两条语句中都
出现了。这种重复是合法的: err 是在第⼀条语句中被声明,⽽在第
⼆条语句中只是被重新赋值。这意味着使⽤之前已经声明过的
err 变
量调⽤ f.Stat ,只会是赋给其⼀个新的值。
在 := 声明中,变量 v 即使已经被声明过,也可以出现,前提是:
该声明和 v 已有的声明在相同的作⽤域中(如果 v 已经在外⾯
的作⽤域⾥被声明了,则该声明将会创建⼀个新的变量 §)
初始化中相应的值是可以被赋给 v 的
并且,声明中⾄少有其它⼀个变量将被声明为⼀个新的变量
这种不寻常的属性纯粹是从实⽤主义⽅⾯来考虑的。例如,这会使得
在⼀个⻓的 if-else 链中,很容易地使⽤单个 err 值。你会经常看
到这种⽤法。
§ 值得⼀提的是,在Go中,函数参数和返回值的作⽤域与函数体的作
⽤域是相同的,虽然它们在词法上是出现在包裹函数体的⼤括号外
⾯。
For
Go 的 for 循 环 类 似 于 — 但 ⼜ 不 等 同 于 —C 的 。 它 统 ⼀
了 for 和 while ,并且没有 do-while 。有三种形式,其中只有⼀个
具有分号。