栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

单值上下文中的多个值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单值上下文中的多个值

如果是多值返回函数,则在调用函数时不能引用具有特定结果值的字段或方法。

如果他们中的一个是

error
,它的存在是有 原因 (这是函数 可能会 失败),你应该 不会 绕过它,因为如果你这样做,你后面的代码 可能
也惨遭失败(如导致运行时的恐慌)。

但是,在某些情况下,您 知道 代码在任何情况下都不会失败。在这些情况下,您可以提供一个 辅助 函数(或方法),该函数将放弃 辅助
函数(或方法,

error
如果仍然发生,则会引起运行时恐慌)。
如果您从代码中提供了函数的输入值,并且知道它们可以工作,则可能是这种情况。和软件包
就是一个很好的例子:如果在编译时提供了有效的模板或regexp,则可以确保在运行时始终可以对它们进行分析而不会出错。因此,包提供了功能,包提供了功能:它们不返回
template
regexp
template
Must(t*Template, err error)*Template
regexp
MustCompile(strstring)*Regexp
error
,因为它们的预期用途是保证输入有效的地方。

例子:

// "text" is a valid template, parsing it will not failvar t = template.Must(template.New("name").Parse("text"))// `^[a-z]+[[0-9]+]$` is a valid regexp, always compilesvar validID = regexp.MustCompile(`^[a-z]+[[0-9]+]$`)

回到你的情况

如果
可以确定

Get()
不会
error
为某些输入值生成,则可以创建一个辅助
Must()
函数,该函数将不返回,
error
但如果仍然发生则引发运行时恐慌:

func Must(i Item, err error) Item {    if err != nil {        panic(err)    }    return i}

但是,您不能在所有情况下都使用它,除非您确定它会成功。用法:

val := Must(Get(1)).Value

替代/简化

如果将

Get()
调用合并到辅助函数中,您甚至可以进一步简化它,让我们称之为
MustGet

func MustGet(value int) Item {    i, err := Get(value)    if err != nil {        panic(err)    }    return i}

用法:

val := MustGet(1).Value

查看一些有趣/相关的问题:

如何解析golang中的多个收益

使用正常功能在Golang中返回类似“
ok”的地图



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号