golang switch 之坑

昨天在星球星主分享了一个题目,是关于一行结束不加分号直接换行,编译期会直接加分号的题目,随后又分享了一道题,如下


import "fmt"

func False() bool {
    return false
}

func main() {

    switch False()
 {
    case true:
        fmt.Println("true")
    case false:
        fmt.Println("false")
    }
}

其实乍一看,是false,但是不妨你写成如下看看

func main() {
    switch False(){
    case true:
        fmt.Println("true")
    case false:
        fmt.Println("false")
    }
}

完全不同的两种结果
对于第一种结果是因为编译期对switch哪一行自动加了分号,这时候switch没有了条件,case会跟true做比较,满足条件的会输出,因此就看到了为什么输出是true

你可能感兴趣的:(golang switch 之坑)