在Go中,如果您给返回变量命名,则函数开始时会将它们初始化为零值。我在下面将这个功能与err
变量一起使用usr, err = user.Current()
。是否可以将类型推断用于usr
变量而不是err
变量?我真的不想声明var usr *user.user
我更愿意在这里使用类型推断。
func getConfigFilepath(userSuppliedFilepath string) (filepath string, err error) {
if userSuppliedFilepath == "" {
usr, err = user.Current()
filepath = path.Join(usr.HomeDir, ".myprogram.config.json")
}
return
}
不,你不能做你想做的事。
您的选择是不使用命名返回,或者像您所说的那样声明
var usr *user.User
usr, err = user.Current()
在某些情况下,您可以这样做,但err
由于您位于if块中,并且正在对new进行本地范围的引用,因此您正在创建一个new err
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句