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