ash*_*ash 8 string performance go switch-statement
你好Go开关字符串只是方便的形式,但不是最快的可能实现?
switch s{
case "alpha": doalpha()
case "betta": dobetta()
case "gamma": dogamma()
default: dodefault()
Run Code Online (Sandbox Code Playgroud)
这等于:
if s=="alpha"{
doalpha()
} else if s == "betta" {
dobetta()
} else if s == "gamma" {
dogamma()
} else {
dodefault()
}
Run Code Online (Sandbox Code Playgroud)
Iam*_*NaN 13
你必须对它进行基准测试,以便告诉你案件的实际差异.这取决于编译器及其所做的优化,因此取决于平台和体系结构.
但是请参阅Go邮件列表中的链接,了解有关switch语句实现的一些细节:
实施的内容如下.1.依次编译和测试所有非常数情况.2.大于3个常数个体的群被二元分割和征服.3.线性比较3个或更少的病例.
因此,基于此,应该没有什么区别.并且switch语句看起来更清晰.这是编写更长的if-else语句的推荐方法:
因此,将if-else-if-else链作为开关编写是可能的,也是惯用的.