赋值运算符=,:=和变量作用域
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
具体的差别,看=、:=两个运算符的文档。当你声明一个全局变量,想在某个函数里进行初始化时,若是在该函数内使用了:=运算符,就达不到预期,之后到了正式使用该变量时,会有空指针或者访问了无效内存等错误。
相关文章推荐
- JavaScript学习笔记 -- 变量作用域问题
- Effective Java - 第45条:将局部变量的作用域最小化
- 作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量
- javascript的解析顺序和变量作用域
- Shell读取文件时变量作用域
- Java基础知识(一)环境变量的设置、变量与常量、自动类型转换、自增长、赋值运算符
- JavaScript变量作用域和变量提升解释(JavaScript Variable Scope and Hoisting Explained)
- c++,在VS2008中讨论for{}声明变量的作用域。
- 【转载】理解 Javascript 中变量的作用域
- Js作用域链及变量作用域
- 局部变量,全局变量,静态变量的作用域,生命期?
- JavaScript中容易忽略的变量作用域
- PHP开始啦--变量作用域,global关键词,static关键词
- python变量作用域
- 深入浅出JavaScript变量作用域
- 变量作用域
- linux shell自定义函数(定义、返回值、变量作用域)介绍
- JS变量作用域、闭包
- [转]ASP.NET变量的作用域
- js变量和作用域的讲解和实例