4

私は次の機能を持っています:

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 コンパイラは、ステートメントを通るすべての可能なパスが値を返すにもかかわらず、「関数が return ステートメントなしで終了する」と不平を言いswitchます。return関数の最後にダミーステートメントを追加する以外に、これを回避する方法はありますか?

4

2 に答える 2

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
}
于 2012-06-18T20:03:00.533 に答える
7

最後に return を追加する代わりに、panic を追加してコンパイラを鎮圧することもできます。コードにバグが含まれていて、その「到達不能」行に到達した場合、プログラムは間違った答えを突き進むのではなく、すぐに停止するため、これは悪い考えではありません。

于 2012-06-18T20:10:20.813 に答える