代码块、作用域

程序实体的访问权限有三种:包级私有的、模块级私有的和公开的

代码块的作用就是限制了程序实体的作用域。

例子1:

package main

import "fmt"

var name = "sixinshuier"

func main() {
	name := "in main"
	{
		name := "in block"
		fmt.Println(name)
	}
	fmt.Println(name)
}

运行结果:

D:GoWorkspacesrcpolarismain>go run test1.go
in block
in main

例子2:

package main

import "fmt"

var name = "sixinshuier"

func main() {
	//name := "in main"
	{
		name := "in block"
		fmt.Println(name)
	}
	fmt.Println(name)
}

运行结果:

D:GoWorkspacesrcpolarismain>go run test1.go
in block
sixinshuier

结论:

1、代码块中变量的查找,首先会找当前代码块,依次向上找,找不到就报错

import .

如果我们把代码包导入语句写成import . "XXX"的形式(注意中间的那个“.”),那么就会让这个“XXX”包中公开的程序实体,被当前源码文件中的代码,视为当前代码包中的程序实体。

重名变量、变量重声明

重名变量:就是对变量的重命名

变量重声明:变量重声明是对同一个变量的多次声明,这里的变量只有一个

原文地址:https://www.cnblogs.com/shix0909/p/13540709.html