loops - 摆脱无用的返回语句

标签 loops go return return-value

我正在尝试重构一些代码并使其更易于阅读。我注意到在某些函数的末尾有一些不必要的返回语句。这是一个概念性示例:

func someFunction(a []arr) int {
    for _,v := range a {
        if v == something {
            // will defenitly get here at some point! 
            return somethingElse
        }
    }
    return -1 // never ever happens! 
} 

在我看来,函数末尾的 return 语句具有误导性,因为它暗示可能会在某个时间点到达。我该如何预防?

请注意,我在其他地方进行错误处理,这就是为什么我可以确定 someFunction 将始终返回 somethingElse 的原因。

最佳答案

panic 而不是在函数结束时返回假值:

func someFunction(a []arr) int {
    for _,v := range a {
        if v == something {
            // will defenitly get here at some point! 
            return somethingElse
        }
    }

    panic("unreachable")
} 

这是 standard library 中的常见模式.

关于loops - 摆脱无用的返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554740/

相关文章:

c++ - 将指针用于条件 while/for 循环会在编译时出错

go - GO 中的工厂模式(包装器)

python - 在 try 和 except 语句中使用 return 语句是否正确?

html - 如何保留HTTP主体的gzip表示形式

c++ - 有没有办法在 C++ 函数体内定义返回类型?

loops - 突破kotlin中的匿名函数

javascript - 循环访问站点上的链接并单击链接 javascript/jquery

c - 找出循环中最大的数

javascript - 创建循环而不是一遍又一遍地复制/粘贴代码

syntax - 如何在 Go 中声明由返回多个值的函数调用实例化的多个变量?