1、在函数返回参数中已定义error变量,在if中内层重新定义了error,这会导致return返回的是外层的error
func foo(x string) (ret int, err error) {
if true {
ret, err := strconv.Atoi(x)
if err != nil {
return
}
}
return ret, nil
}
解决办法:1.让内层error与外层error不重名;2.代码改为:return 0,err