首页 > 后端开发 > Golang > 如何避免 Go 类型切换分支内的类型断言?

如何避免 Go 类型切换分支内的类型断言?

Susan Sarandon
发布: 2024-12-06 09:21:11
原创
894 人浏览过

How Can I Avoid Type Assertions Inside Go's Type Switch Branches?

消除类型切换分支内的类型断言

在 Go 中,类型切换提供了一种基于值的类型进行分支执行的便捷方法。但是,这些分支中的类型断言可能会变得重复且麻烦。

类型断言避免

为了避免不必要的类型断言,您可以将类型切换的结果分配给类型变量:

switch question := question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question, symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question, symbols)
}
登录后复制
登录后复制

在此示例中,类型开关将 Question 的值分配给变量问题,根据执行的分支自动输入。这消除了分支内显式类型断言的需要。

示例

考虑以下代码:

switch question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question.(interfaces.ComputedQuestion), symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question.(interfaces.InputQuestion), symbols)
}
登录后复制

将类型断言替换为变量赋值产生以下等效代码:

switch question := question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question, symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question, symbols)
}
登录后复制
登录后复制

通过采用通过这种方法,您可以在不牺牲功能的情况下简化代码并提高其可读性。

以上是如何避免 Go 类型切换分支内的类型断言?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板