学习一门新语言需要了解的基础-12 if和switch对比

本节内容

  • 是否存在性能差异
  • 使用场景
  • 反汇编对比[付费阅读]

之前初步接触了汇编,然后利用汇编简单了解下函数调用的过程,包括怎么样保护堆栈帧现场和恢复现场。另外做了简单的函数调用参数复制,返回值的传递,类似于这样的一些东西。今天其实是对照之前的东西做简单的应用。

是否存在性能差异

我们知道在很多语言里面都会有这两种选择条件的分支,看上去觉得差不多,除了某些语言有些限制,比如c语言它要求case里面必须要是常量之类的,现在新的语言基本上没有这样的限制。那么这两种有什么样的差异,什么时候该用,什么时候用if,什么时候用switch,甚至很多人说了哪个性能更好。那么我们怎么确认这件事呢?怎么样确认别人说这句话是对的还是错的。我们以go语言为例子来对比这个事情。

使用场景

switch语句更像数据表驱动,if语句更像逻辑驱动。if是先有结论,结论匹配条件。switch更像先给出条件,然后条件去匹配结论。从设计的角度它们俩的方向是反的。switch语句不太适合处理很复杂的逻辑。

它们的使用场景是设计思想的问题。

package main

type Week byte

const (
    _ Week = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
)

func example(w Week) {
    switch w {
    case Monday, Wednesday, Friday:
        println("1,3,5")
    case Tuesday, Thursday:
        println("2,4")
    default:
        println("6,7")
    }

    switch {
    case w < Thursday:
        println("1,2,3")
    case w < Saturday:
        println("4,5")
    default:
        println("6,7")
    }
}

反汇编对比[付费阅读]

这个系列的每篇文章有大半篇幅内容属于付费阅读。提供微信支付支付宝支付打赏50元备注留言手动提供付费文章访问密码。

上一篇:Quartz:ERROR threw an unhandled Exception


下一篇:asp.net 输出Excel