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

如何在恐慌的Go函数中返回值?

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

如何在恐慌的Go函数中返回值?

您可以使用命名结果参数。命名您的返回值,并在检测到紧急情况时在延迟函数中更改返回“变量”的值。更改后的新值将被返回。

例:

func main() {    fmt.Println("Returned:", MyFunc())}func MyFunc() (ret string) {    defer func() {        if r := recover(); r != nil { ret = fmt.Sprintf("was panic, recovered value: %v", r)        }    }()    panic("test")    return "Normal Return Value"}

输出(在Go Playground上尝试):

Returned: was panic, recovered value: test

Spec:Defer语句中 提到了这一点:

例如,如果延迟函数是函数文字,并且周围函数已命名结果参数在文字范围内,则延迟函数可以在返回结果参数之前对其进行访问和修改。

博客文章 Defer,Panic and Recover中 也提到了这一点:

延迟函数可以读取并分配给返回函数的命名返回值。

有效的Go中:Recover

如果出现

doParse
紧急情况,恢复块会将返回值设置为—
nil
延迟函数可以修改命名的返回值。



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

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

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