Go-err is shadowed during return
where?
Go程序函数中在通过 return关键字返回的时候,报错
why?
变量作用域的问题,在子作用域定义一个上层作用域的同名的变量
package main import ( "errors" "log" ) func main() { Count(10) } func Count(num int) (err error) { // 函数中定义了一个 err变量 if num <= 0 { // if分支中又重新定义了一个err变量 err := errors.New("num数不合法") log.Fatalln(err) // 直接返回,并没有返回参数,在子作用域中,并不能直接返回上一层定义作用域中返回变量 // 也就是说命名参数返回,只能返回同一级别作用域下参数,不是同一级别作用域参数需要指明返回参数值 return // 正确返回 //return err } // 同一级别命名参数作用域,可以直接返回 return }
way?
同一级别作用域命名参数可以直接通过 return返回,不需要接参数,而不是同一级别作用域返回的时候,函数要求返回的参数跟在return后面