为什么我们真的需要Golang中的“失败”?哪个用例使Golang创作者首先将其包括在内?

时间:2019-05-09 06:55:31

标签: go switch-statement

切换块中使用的

“ fallthrough”,将执行转移到下一个案例的第一条语句,而无需评估下一个case语句。在现实世界中,为什么我们需要它?如果我们完全必须执行下一个case块,则可以在已评估的case中组合该代码。为什么我们真的需要“失败”?它的意义是什么?

1 个答案:

答案 0 :(得分:0)

将2个案例组合为一个案例并不等同于2个案例,其中第一个案例以fallthrough结尾。

switch {
case conditionA:
    statementA()
    fallthrough
case conditionB:
    statementB()
}

在此示例中,如果statementB()的值为conditionA并且false的值为conditionB,则将执行true。如果您将它们结合在一起:

switch {
case conditionA:
    statementA()
    statementB()
}

仅在statementB()计算为conditionA时执行true,仅此而已。这与第一个示例不同。

很显然,您不能在案例表达式中包含conditionB,因为statementA一定不能依赖conditionB(如果我们要进行等效转换)。

总而言之,这只是您可能会使用或可能不会使用的“工具”。您可以通过其他方式(if语句)来实现相同目的,但这在某些情况下可能很方便。

在许多语言中,如果您不希望这种“失败”行为,则必须使用break语句,因此许多人可能已经习惯了它。尽管大多数情况下都使用开关来避免故障,所以这成为Go中的默认设置,但是如果您需要其他逻辑,则可以选择fallthrough

问题为什么我们真的需要“穿透”?在那些语言中与为什么我们需要“ break”是可选的而非强制性的?