问题:
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