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

如何定义动态接口/结构

如何定义动态接口/结构

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
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信