你好,Go switch 字符串只是方便的形式,但不是最快的实现?switch s{case "alpha": doalpha()case "betta": dobetta()case "gamma": dogamma()default: dodefault()这是否等于:if s=="alpha"{ doalpha()} else if s == "betta" { dobetta()} else if s == "gamma" { dogamma()} else {dodefault()}
2 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
在 Go 中,switch
具有 4 个或更多 case的常量表达式被实现为二分查找。
这些案例在编译时排序,然后进行二进制搜索。
在这个小型基准测试中,我们可以看到switch
只有5 个案例的a平均比相应的if-then-else序列快 1.5 倍。一般来说,我们可以假设 O(logN) 与 O(N) 的性能差异。
3 个较少的情况是线性比较的,因此期望与if-then-else 的性能相同。
- 2 回答
- 0 关注
- 402 浏览
添加回答
举报
0/150
提交
取消