走近科学

tien的随笔

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

 

posted on 2021-11-24 11:03  _tien  阅读(42)  评论(0编辑  收藏  举报