我是 Go 的新手,真的在尋找一些指導(dǎo)。在我的應(yīng)用程序中,我有一個(gè)接收事件的通道,我想要一個(gè)像這樣的界面:{ "type": "event1", "data": {}}其中的結(jié)構(gòu)data取決于type.然后在通道中偵聽這些事件的代碼將根據(jù)事件的類型知道期望什么樣的結(jié)構(gòu)。我怎樣才能定義這樣的接口?這在 Go 中被認(rèn)為是一種好的做法嗎?提前致謝
1 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
您正在尋找一個(gè)type switch:
package main
import (
"fmt"
)
type X struct {
i int
}
func main() {
c := make(chan interface{}, 5)
c <- 4
c <- "hi"
c <- X{}
close(c)
for value := range c {
switch v := value.(type) {
case int:
fmt.Println("got int", v)
case string:
fmt.Println("got string", v)
case X:
fmt.Println("got X", v)
default:
fmt.Printf("unexpected type %T\n", value)
}
}
}
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)
0/150
提交
取消