第3章 作用域

佐手、 提交于 2019-12-27 02:07:04

第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:”表示不建议使用

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!