Ding Jiaxiong 2022-12-03 20:41 采纳率: 50%
浏览 20

Go的switch 语句问题


package main

import "fmt"

func main() {

    switch {
    // false, 肯定不会执行
    case false:
        fmt.Println("case 1为false")
        fallthrough
    //true 肯定执行
    case true:
        fmt.Println("case 2为true")
        fallthrough
    // 由于上一个case 中有fallthrough, 即使是 false,也强制执行
    case false:
        fmt.Println("case 3为false")
        fallthrough
    default:
        fmt.Println("默认 case")
    }
}

img

按理说,case 后面的字面量不是不能重复吗,虽然编辑器已经发现错误了,但是还是编译通过了,并且输出了正确的结果,为什么

  • 写回答

1条回答 默认 最新

  • Huazie 全栈领域优质创作者 2022-12-03 21:18
    关注

    case ,你就理解 是 一个个 if - else 判断, 判断的内容当然可以是相同的, 谁在前,谁先满足,就先执行谁。

    fallthrough 的功能在于,程序会继续执行下一条 case,而不会去判断下一个 case 的表达式是否为 true。


    如有帮助,欢迎采纳哈!

    在这里插入图片描述

    本人的开源项目,欢迎star支持下!!!

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月3日