有什么办法可以解决,包括一个无法访问的返回语句吗?

时间:2012-06-18 19:59:40

标签: return switch-statement go

我有以下功能:

func fitrange(a, x, b int) int {
    if a > b {
        a, b = b, a
    }
    switch true {
    case x < a:
        return a
    case x > b:
        return b
    default:
        return x
    }
}

go编译器抱怨&#34;函数在没有return语句的情况下结束&#34;即使switch语句中的每个可能路径都返回一个值。除了在函数末尾添加一个虚拟return语句之外,还有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:10)

一起删除default个案,并在切换后删除return x

像:

func fitrange(a, x, b int) int {
    if a > b {
        a, b = b, a
    }
    switch true {
    case x < a:
        return a
    case x > b:
        return b
    }
    return x
}

答案 1 :(得分:7)

您可以通过添加恐慌来安抚编译器,而不是在最后添加返回。这不是一个坏主意,因为如果你的代码包含一个bug并且达到了“无法访问”的行,那么你的程序将会立即停止而不是向前推进可能错误的答案。