在Go中,switchE比C(和C++)灵活得多,因为它们可以处理布尔表达式的情况,并似乎完全替换大型else-if阶梯,尤其是默认的switch {...}块.

switch {
    case x < 5 && y > 2:
        //...
    case y == 1 || x > 2:
        //...
    default:
}

围棋使用switchelse-if有效率优势吗?看来,switch的灵活性将会丧失提高的效率.是不是只有编译器才能弄清楚,看看它是否能制作跳转表呢?

ifelse相比,使用switch是否有性能优势?

推荐答案

除非您的case都是整数常量,否则您将失go 将switch转换为跳转表的可能性.

所以,如果只使用整型常量,Go的switch最多可能相当于C++switch,但否则它的效率不会比if/else高.

Go相关问答推荐

由docker中的nginx提供的样式和图像在页面上不起作用

go-chi: 接受带有反斜杠的 url 路径参数

Caddy服务器try 打开端口80而不是8090.

如何从Go项目连接Microsoft Access数据库?

如何用mpb创建两行进度条?

为什么互斥量比 golang 中的通道慢?

整理时转换值

Go Colly 如何找到请求的元素?

不能使用 mockDB(*MockDB 类型的变量)作为 struct 文字中的 *gorm.DB 值

emersion/go-imap - imap.FetchRFC822:无效内存地址或零指针取消引用

当函数返回一个函数时,为什么 Go 泛型会失败?

Go cmp - 如何为以 struct 为键的映射定义自定义相等性?

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

使用无服务器工作流 go sdk 时出现间歇性 JSON 解组错误

关系不存在 GORM

GoLang 遍历 yaml 文件

从另一个没有重复的确定性 int

函数参数的判断顺序是什么?

手动下载并放置一个 golang mod 文件

Closed channel与nil channel