易学笔记-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  显示的是全局变量

猜你喜欢

转载自blog.csdn.net/u011830122/article/details/84327124