Golang语法之变量可见性与作用域

发布于 19 天前  40 次阅读


最近离职了,可以有空写一下博客了。

这篇文章的内容倒也不很复杂,只是因为在公司实习的时候两次因为这个问题debug了好久所以写此贴警示自己。

可见性

Golang没有其他语言类似于public,protected,private这样的显式可见性修饰符,其可见性由声明变量时的变量名体现。

如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头)。

作用域

在 Golang 中,变量作用域分为:

  • 本地局部变量
  • 全局变量
  • 参数变量

本地局部变量

定义:在函数代码块中定义的变量。

作用域范围:若在函数中声明则作用域为函数;若在代码块中声明则作用域为代码块。

全局变量

定义:在函数之外声明的变量都属于全局变量;全局变量声明必须以 var 开头

作用域范围:视其变量名而定,若以大写开头则为所有package,否则为当前package。

参数变量

定义:函数传参时的变量

生效范围:函数内

与本地局部变量区别:参数变量不使用编译不报错本地局部变量声明不使用报错


你好哇!欢迎来到雷公马碎碎念的地方:)