Go中變量作用域的小坑


直接上一實例:

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 中聲明的變量等。都屬於塊區域有效。避免采坑額,特此記錄下。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM