进行类型推断和命名返回变量

尼尔:

在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章