我不明白为什么这个带有指针并使用 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")
}
}
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消