第3章 作用域
3.1 关于作用域
3.1.1 局部变量与全局变量
(1)局部变量:Go语言中,在函数体或代码块内声明的变量称为局部变量,他们的作用域只在其所属的函数体或代码块内,特别的,参数和返回值变量也是局部变量。
(2)全局变量:Go语言中,在函数体外声明的变量称为全局变量,他们的作用域都是全局(在本包范围内)。全局变量可以在整个包甚至是外部包(被到处后)使用。
(3)简式变量:Go语言中使用 “:=” 声明的变量一般也是局部变量,如果新的局部变量域同名已定义的变量不在一个作用域中,Go语言会在此作用域新定义的这个局部变量,遮盖住全局变量。
3.1.2 显式与隐式代码块
根据Go语言的规范,Go语言中的标识符作用域是基于代码块的。代码块是包裹在一对花括号{}内部的声明和语句。
特别的,Go语言中某变量具体对应的内存的分配,仅在定义时完成。即,确定某变量对应的具体内存,直接寻找其定义时对应的内存即可。
package main
var(
Ga int = 100
)
func GetGa1() func() int {
Ga := 10
return func() int{
Ga = Ga +1
return Ga // Ga对应GetGa1中的Ga := 10
}
}
func GetGa2(test func() int) func() int {
Ga := 20
Ga = Ga + 1
return test
}
func test() int{
Ga = Ga +1
return Ga // Ga对应全局变量中的Ga := 100
}
func main(){
getGa1 := GetGa1()
println("num = ", getGa1())
println("num = ", getGa1())
println("num = ", getGa1())
getGa2:= GetGa2(test)
println("num = ", getGa2())
println("num = ", getGa2())
println("num = ", getGa2())
}
程序输出:
num = 11
num = 12
num = 13
num = 100
num = 101
num = 102
3.2 约定与惯例
3.2.1 可见性规则
在Go语言中,标识符必须以一个大写字母开头,才能被外包的代码所使用,这称为导出。
特别的,变量可用中文,但应当尽量避免。
3.2.2命名规范以及语法惯例
- 大小驼峰命名法
- 左花括号“{”不能单独占一行,右花括号“}”需要单独占一行
3.2.3 注释
在Go语言中有两种注释形式:
(1)行注释:使用//开始,后面紧接一个空格。
(2)块注释:以/*开头,以*/结尾。
(3)函数和方法的注释需要以韩淑敏刚开始,在函数之前,两者没有空行
(4)注释中需要预格式化的部分,直接加空格缩进即可
(5)在函数、方法、结构体或者包注释前面标注“Deprecated:”表示不建议使用
来源:CSDN
作者:WXY_supn
链接:https://blog.csdn.net/WXY_supn/article/details/103718841