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

如何定义动态接口/结构

如何定义动态接口/结构

Go
皈依舞 2023-05-08 16:27:47
我是 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)

        }

    }

}


查看完整回答
反对 回复 2023-05-08

添加回答

代码语言

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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