直接上一實例:
package main import "fmt" func main(){ var a int = 0 fmt.Println("for start") for a:=0; a < 6; a++ { fmt.Println(a) } fmt.Println("循環結束.....") fmt.Println(a) //這里輸出 0 why 不是 6 }
注意:在 for 循環的 initialize(a:=0) 中,此時 initialize 中的 a 與外層的 a 不是同一個變量,initialize 中的 a 為 for 循環中的局部變量,因此在執行完 for 循環后,輸出 a 的值仍然為 0。要得到6,修改如下:
package main import "fmt" func main(){ var a int = 0 fmt.Println("for start") for a = 0; a < 6; a++ { fmt.Println(a) } fmt.Println("循環結束.....") fmt.Println(a) //這里輸出是 6 }
原因就在於變量a的作用域的理解。包括if 中聲明的變量等。都屬於塊區域有效。避免采坑額,特此記錄下。