1. 程式人生 > >易學筆記-Go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.7 變數的作用域

易學筆記-Go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.7 變數的作用域

  • 變數的作用域
  1. 變數的作用域有幾種:
    1. 包間變數:也是在函式外宣告的變數,而且第一個字母是大寫,所有本包函式或者包外函式都可見
    2. 全域性變數:在函式外宣告的變數,所有函式都可見
    3. 區域性變數:在本函式內部都可見
    4. 塊變數:僅僅在某個塊中可見,比如在某個if塊/for迴圈塊中可見
  2. 覆蓋原則:小範圍的同名變數會覆蓋大範圍的同名變數,也就是:
    1. 塊變數 會覆蓋 區域性變數和全域性變數
    2. 區域性變數  會覆蓋 全域性變數
    3. 包間變數 訪問時需要帶包名,屬於指定呼叫了
  3. 舉例:
    1. 原始碼:
      //宣告全域性變數
      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)
      }
    2. 結果顯示:

      m = 100  顯示的是全域性變數

      m = 200  顯示的是區域性變數,區域性變數覆蓋全域性變數

      m = 100  顯示的是全域性變數