易學筆記-Go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.7 變數的作用域
阿新 • • 發佈:2018-11-22
- 變數的作用域
- 變數的作用域有幾種:
- 包間變數:也是在函式外宣告的變數,而且第一個字母是大寫,所有本包函式或者包外函式都可見
- 全域性變數:在函式外宣告的變數,所有函式都可見
- 區域性變數:在本函式內部都可見
- 塊變數:僅僅在某個塊中可見,比如在某個if塊/for迴圈塊中可見
- 覆蓋原則:小範圍的同名變數會覆蓋大範圍的同名變數,也就是:
- 塊變數 會覆蓋 區域性變數和全域性變數
- 區域性變數 會覆蓋 全域性變數
- 包間變數 訪問時需要帶包名,屬於指定呼叫了
- 舉例:
- 原始碼:
//宣告全域性變數
var m = 100
func main() {
fmt.Printf("m = %d\n", m)
func1()
func2()
}
func func1() {
//宣告區域性變數
var m = 200
fmt.Printf("m = %d\n", m)
}
func func2() {
fmt.Printf("m = %d\n", m)
} - 結果顯示:
m = 100 顯示的是全域性變數
m = 200 顯示的是區域性變數,區域性變數覆蓋全域性變數
m = 100 顯示的是全域性變數
- 原始碼: