猿问

理解 Go 中的 switch 语句和指针

我不明白为什么这个带有指针并使用 switch 语句的 Go 代码会打印出“a”:



import "fmt"


func main() {

    var a, b int

    var c = &b

    switch *c {

    case a:

        fmt.Println("a")

    case b:

        fmt.Println("b")

    default:

        fmt.Println("c")

    }

对此有任何提示吗?


摇曳的蔷薇
浏览 142回答 1
1回答

UYOU

a并且b都是零(整数的零值)。初始化c = &b意味着指向. c_*intb继续 switch 语句,我们正在检查*cwhich 取消引用c的值 和 是 的值b,即0。由于a也是零,第一种情况匹配。您可以交换case aandcase b语句并b放在第一位。在这种情况下,它将打印,b因为它现在是第一个匹配的案例:package mainimport "fmt"func main() {    var a, b int    var c = &b    switch *c {    case b:        fmt.Println("b")    case a:        fmt.Println("a")    default:        fmt.Println("c")    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答