我不明白為什么這個帶有指針并使用 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貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個贊
a并且b都是零(整數(shù)的零值)。
初始化c = &b意味著指向. c_*intb
繼續(xù) switch 語句,我們正在檢查*cwhich 取消引用c的值 和 是 的值b,即0。
由于a也是零,第一種情況匹配。
您可以交換case aandcase b語句并b放在第一位。在這種情況下,它將打印,b因?yàn)樗F(xiàn)在是第一個匹配的案例:
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 關(guān)注
- 115 瀏覽
添加回答
舉報
0/150
提交
取消