为了账号安全,请及时绑定邮箱和手机立即绑定

理解 Go 中的 switch 语句和指针

理解 Go 中的 switch 语句和指针

Go
摇曳的蔷薇 2022-07-04 16:29:13
我不明白为什么这个带有指针并使用 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")    }} 对此有任何提示吗?
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

a并且b都是零(整数的零值)。


初始化c = &b意味着指向. c_*intb


继续 switch 语句,我们正在检查*cwhich 取消引用c的值 和 是 的值b,即0。


由于a也是零,第一种情况匹配。


您可以交换case aandcase b语句并b放在第一位。在这种情况下,它将打印,b因为它现在是第一个匹配的案例:


package main


import "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")

    }

}


查看完整回答
反对 回复 2022-07-04
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号