先看一段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里面的