消除类型切换分支内的类型断言
在 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中文网其他相关文章!