zoukankan      html  css  js  c++  java
  • 赋值运算符=,:=和变量作用域

    在声明使用全局作用域的变量时,要特别小心。

    package main
    
    import "fmt"
    
    var name string = "恋码"
    
    func setLocalName()  {
        name := "码农"  // :=相当于在local范围内重新声明一个name,对全局name无作用
        fmt.Println(name)
    }
    
    func setName()  {
        name = "hhb"  // =为全局name赋值
        fmt.Println(name)
    }
    
    func main() {    
        setLocalName()
        setName()
        fmt.Println(name)
    }

    执行:
    码农
    hhb
    hhb

    具体的差别,看=、:=两个运算符的文档。当你声明一个全局变量,想在某个函数里进行初始化时,若是在该函数内使用了:=运算符,就达不到预期,之后到了正式使用该变量时,会有空指针或者访问了无效内存等错误。

    :=只能用在函数作用域内,而=可以任意,:=是对var arg type = value的快捷方式。

  • 相关阅读:
    053335
    053334
    053333
    053332
    053331
    053330
    053329
    053328
    053327
    053326
  • 原文地址:https://www.cnblogs.com/thingk/p/7469550.html
Copyright © 2011-2022 走看看