Go语言学习指南:惯例模式与编程实践
上QQ阅读APP看书,第一时间看更新

4.6 if和switch之间的选择

就功能而言,if-else语句和默认的switch语句之间没有太大区别。它们都允许一系列的比较判定。那么,什么时候应该使用switch语句,什么时候应该使用if-else语句呢?如果使用switch语句(即使是默认的switch),则表示每个case分支的比较判断从句与值之间存在某种关系。为了清晰地展示不同之处,我们使用默认的switch重构用到if-else的随机数分类代码,如示例4-22所示。

示例4-22:默认的switch重构if-else

大多数人都会觉得这样更容易理解。被比较的值单独列在一行,所有的case分支在左边对齐。比较判断的代码一目了然。

当然,在Go中没有禁止在case分支判断时使用多个不相关的变量进行比较。但这并不是习惯用法。如果是这样的情况,可以使用一系列的if-else语句(或者考虑重构代码)。

 当变量有多个相关可能性判断时,默认的switch语句优于if-else语句链。此时switch语句可以增强代码的可读性,突出变量和判断值之间的一系列关系。