
上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
语句可以增强代码的可读性,突出变量和判断值之间的一系列关系。