### 代码块
- 包裹在一对大括号内部的声明和语句序列
- 如果大括号内没有声明和语句序列，则称为`空代码块`
- 代码块支持嵌套，可以在一个代码块中嵌入多个层次的代码块

```go

func foo() { //代码块1
    { // 代码块2
        { // 代码块3
            { // 代码块4

            }
        }
    }
}
```

#### 显示代码块
- 肉眼可见的大括号包裹

#### 隐式代码块
- 无法通过大括号来识别

![](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/wiki/go/daimakuai.jpg)

### 作用域
- 针对标识符的，不局限于变量
- 一个标识符的作用域就是指这个标识符在被声明后可以被有效使用的源码区域
- 作用域是一个编译期的概念，编译器在编译过程中会对每个标识符的作用域进行检查，对于在标识符作用域外使用该标识符的行为会给出编译错误的报错