以下(设计的)代码定义了变量 i 的两次出现或“实例”:
import "fmt"
func main() {
goto_done := false
i := 3
fred:
fmt.Printf("i #1 = %d\n", i)
if !goto_done {
i := 4
fmt.Printf("i #2 = %d\n", i)
goto_done = true
goto fred
}
}
从输出中可以看出,这两个值都作为单独的值存在,因为定义第二个值不会覆盖第一个值:
i #1 = 3
i #2 = 4
i #1 = 3
此功能是否有任何建设性的用例,或者它只是语言的一个怪癖?
慕仙森