zoukankan      html  css  js  c++  java
  • Go中局部全局变量的区分

    这是可能也许是容易混淆滴,先上1个例子:

    package main
    import "fmt"
    var nickname = "大虾"
    func main() {
        show() //大虾
        change() //小虾
        show() //大虾
        fmt.Print(nickname) //大虾
    }
    
    func show() { print(nickname) }
    
    func change() {
        nickname := "小虾"
        print(nickname)
    }

    上面会输出:

    大虾大虾小虾大虾

    我们稍微改动下:

    package main
    import "fmt"
    var nickname = "大虾"
    func main() {
        show() //大虾
        change() //小虾
        show() //这里不再是 大虾 而是 虾
        fmt.Println(nickname) //这里不再是 大虾 而是 虾
    }
    
    func show() { print(nickname) }
    
    func change() {
        nickname = "小虾" // 注意这里不再是 nickname := "小虾"
        print(nickname)
    }

    上面会输出:

    大虾小虾小虾小虾

    可见声明的全局变量var nickname 在函数change里面重载更新了,再次输出时已经是被更新后的值。
    我们再看一个函数变量域

    package main
    var nickname string
    
    func main() {
        nickname = "大虾"
        print(nickname) //大虾
        change()
        println(nickname) //大虾
    }
    
    func change() {
        nickname := "小虾"
        print(nickname) //小虾
        show() //大虾 上面只是nickname := 只是初始化声明变量。仅在函数内有效,全局变量nickname未变
    }
    
    func show() {
        print(nickname)
    }

    上面会输出:

    大虾小虾大虾大虾

    通过上面几个例子,我想大家也应该有深入的理解啦。

  • 相关阅读:
    Js 循环 forEach, map, for, for...in, for...of
    es6 let const
    es6 Symbol类型
    es6 Reflect 与 Proxy
    es6 Map&Set
    es6箭头函数
    es6数组Arrary
    学写网站(一)前端配置之安装nvm、node、npm
    python获取当前执行代码所在文件的地址、主程序所在地址
    scrapy中的选择器下载中间件downloadmiddlewares
  • 原文地址:https://www.cnblogs.com/phpper/p/9934833.html
Copyright © 2011-2022 走看看