作用于定义标识符可以使用的范围。在go中使用{}
定义作用域的范围。在{}中可以嵌套语句块。
但是,子语句快可以使用父语句块,父语句快不可以使用子语句块。如下所示就会报:undefined: inner
.因为在{}外是不能调用{}内的inner := 2
outer := 1
{
inner := 2
fmt.Println(outer)
fmt.Println(inner)
}
fmt.Println(inner)
子语句快可以使用父语句块
outer := 1
{
inner := 2
fmt.Println(outer)
fmt.Println(inner)
{
inner2 := 3
fmt.Println(outer,inner,inner2)
}
}
//fmt.Println(inner)
运行
[root@LinuxEA /opt/Golang]# go run 05.go
1
2
1 2 3
假如在语句块中嵌套了很多层,那么调用的流程就是就近调用。
outer := 1
{
inner := 2
outer := 11
fmt.Println(outer)
fmt.Println(inner)
{
inner2 := 3
fmt.Println(outer,inner,inner2)
}
}
fmt.Println(outer)
运行
[root@LinuxEA /opt/Golang]# go run 05.go
11
2
11 2 3
1