go 变量声明作用域问题

先看一段go代码

结果:

 之前是做PHP的,没太在意变量作用域的问题。在goland IDE中 看到if里面的b变色 也一直没在意, 

直到看到这段简单的演示才发现 原来里外b变量是不一样的,和JavaScript中的let声明一样,

相当于是重新声明了一个局部变量 跟外面虽然重名,但作用域不同 互相不影响

可能会引发的问题是:

        var err error

	defer func() {
		if err != nil {
			fmt.Println("defer err")
		}
	}()

	if true {
		err := errors.New("sdfsdf")
		if err != nil {
			fmt.Println("if err")
		}
	}

  只会打印 if err  不会打印defer里面的

每天都是不想努力的一天....
原文地址:https://www.cnblogs.com/Theia/p/15597185.html