Block
备注:摘录自 Golang语言规范 https://golang.org/ref/spec#Blocks
Blocks
Block/块是在匹配的大括号内的声明和语句序列(可能为空):
Block = "{" StatementList "}" .
StatementList = { Statement ";" } .
除了源码中的显性块,还有隐性块:
- universe block (宇宙块)包含了所有的go源代码文本。
- 每个包都有一个 package block (包块),包含该包的所有go源代码文本。
- 每个文件都有一个 file block (文件块),包含该文件中的所有go源代码文本。
- 每个 “if”、”for “和 “switch “语句都被认为是在自己的隐含块中。
- 在 “switch “或 “select “语句中的每个子句都作为一个隐式块。
块可以嵌套,会影响scope/范围。