操作 := 只能用于方法内部,声明并初始化新的变量,不能用于已声明变量赋值
var v int = 0 v := 1 // 错误
:= 操作左边必须要有新变量,那么多个变量初始化只需要满足左边至少有一个新变量即可
f,err := os.Open(infile) // ... f,err := os.Create(outfile)//错误, f2,err:= os.Create(outfile) , //f,err = os.Create(outfile)
func() (err error) { aa,err := 1,errors.New(" a error") // a是新变量,err是被赋值 if err != nil { return // 正确返回err } // ------------------------------------------------ if bb,err := 2,errors.New("b error"); err != nil { // 此刻if语句中err被重新创建 return // if语句中的err覆盖外面的err,导致编译 错误 (err is shadowed during return) //解决方案---------------------------- //if bb,err1 := 2,errors.New("b error"); err1 != nil { // err = err1 // return //------------------------------------- } else { fmt.Println(bb) } return }()原文链接:https://www.f2er.com/go/188840.html