• 欢迎来到技术杂记,希望本站内容对各位有所帮助
  • 如果您觉得本站不错,那么赶紧使用Ctrl+D 收藏吧

go语言 defer err的继承问题

go问题集 admin 5天前 10次浏览 0个评论

问题:

func {
  defer func() {
     if err != nil {
     }
  }

  return err
}

函数里return err后defer里的err是否会更新?

解答:

func (c *aaa) Aaa() (err error) {
  defer func() {
     if err != nil {
     }
  }

  return error.New("aaa")
}

这种写法是可以的,因为return后,return的错误值会赋值给右上方的err,而右上方的err就是defer里的err

func (c *aaa) Aaa() (error) {
  var err error
  defer func() {
     if err != nil {
     }
  }

  return error.New("aaa")
}

这种写法是不行的,return后赋值给右上角的error,是一个隐藏变量,这个隐藏变量不是第一行定义的那个err


技术杂记, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:go语言 defer err的继承问题
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址