我是 Go 的新手,真的在寻找一些指导。在我的应用程序中,我有一个接收事件的通道,我想要一个像这样的界面:{ "type": "event1", "data": {}}其中的结构data取决于type.然后在通道中侦听这些事件的代码将根据事件的类型知道期望什么样的结构。我怎样才能定义这样的接口?这在 Go 中被认为是一种好的做法吗?提前致谢
1 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
您正在寻找一个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 关注
- 93 浏览
添加回答
举报
0/150
提交
取消