从零学习 Go 语言(20):理解语句块与作用域
由于 Go 使用的是词法作用域,而词法作用域依赖于语句块。所以在讲作用域时,需要先了解一下 Go 中的语句块是怎么一回事?
1. 显示语句块与隐式语句块
通俗地说,语句块是由花括弧({}
)所包含的一系列语句。
语句块内部声明的名字是无法被外部块访问的。这个块决定了内部声明的名字的作用域范围,也就是作用域。
用花括弧包含的语句块,属于显示语句块。
在 Go 中还有很多的隐式语句块:
- 主语句块:包括所有源码,对应内置作用域
- 包语句块:包括该包中所有的源码(一个包可能会包括一个目录下的多个文件),对应包级作用域
- 文件语句块:包括该文件中的所有源码,对应文件级作用域
- for 、if、switch等语句本身也在它自身的隐式语句块中,对应局部作用域
前面三点好理解,第四点举几个例子
for 循环完后,不能再使用变量 i
for i := ; i < 5; i++ {
fmt.Println(i)
}
相关文章