从零学习 Go 语言(20):理解语句块与作用域

2020-07-08 00:00:00 函数 语句 变量 声明 作用


由于 Go 使用的是词法作用域,而词法作用域依赖于语句块。所以在讲作用域时,需要先了解一下 Go 中的语句块是怎么一回事?

1. 显示语句块与隐式语句块

通俗地说,语句块是由花括弧({})所包含的一系列语句。

语句块内部声明的名字是无法被外部块访问的。这个块决定了内部声明的名字的作用域范围,也就是作用域。

用花括弧包含的语句块,属于显示语句块。

在 Go 中还有很多的隐式语句块:

  • 主语句块:包括所有源码,对应内置作用域
  • 包语句块:包括该包中所有的源码(一个包可能会包括一个目录下的多个文件),对应包级作用域
  • 文件语句块:包括该文件中的所有源码,对应文件级作用域
  • for 、if、switch等语句本身也在它自身的隐式语句块中,对应局部作用域

前面三点好理解,第四点举几个例子

for 循环完后,不能再使用变量 i

for i := ; i < 5; i++ {
    fmt.Println(i)
}

相关文章