知识卡片

switch默认不贯穿的设计

专业/工作 · 484.a

内容

C、C++、Java的switch默认会贯穿(fall through)——执行完一个case会继续往下执行下一个case,除非显式写break,这个”忘记写break导致意外贯穿”是经典的低级错误来源。发散:这是”把最常见的用法设为默认值”的设计原则——绝大多数switch场景是”匹配一个分支就结束”,贯穿反而是少数情况,C系语言把小概率行为设为默认、要求你为最常见的情况。

参考来源

- 位置:《Go语言程序设计》第5章《过程式编程》(源文件:_epub-src/OEBPS/text00039.html) - 结论依据:原文在该章节围绕“C、C++、Java的`switch`默认会贯穿(fallthrough)——执行完一个`case`会继续往下…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:这是因为当 fmt 包的打印函数遇到 interface{} 类型时,它们会足够智能地打印实际类型的值。 5.2 分支 Go语言提供了3种分支语,即 if 、 switch 和 select, 后者将在后面深入讨论(参见5.4节)。分支效果也可以通过使用一个映射来达到,它的键可以用于选择分支,而它的值是对应的要调用的函数,我们会在本章末尾…