您的位置:首页 > 其它

赋值运算符=,:=和变量作用域

2017-09-03 14:35 183 查看
在声明使用全局作用域的变量时,要特别小心。

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


具体的差别,看=、:=两个运算符的文档。当你声明一个全局变量,想在某个函数里进行初始化时,若是在该函数内使用了:=运算符,就达不到预期,之后到了正式使用该变量时,会有空指针或者访问了无效内存等错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: