如何使用golang WebSocket解码多种消息类型?

如何使用golang WebSocket解码多种消息类型?,websocket,go,Websocket,Go,我有一个使用(相对)标准库的go程序。我试图从一个网页接收和解码消息,该网页对每种类型的消息都有不同的结构,即 {type: "messagetype", msg: { /* structure different for each message type */ } } 是否有办法对消息进行“部分”解码,在继续将实际消息解码为go结构之前只检查type字段 这是否需要编写一个定制的编解码器,一个'laJSON,将消息本身委托给JSON编解码器?用于延迟解码,例如 struct { t

我有一个使用(相对)标准库的go程序。我试图从一个网页接收和解码消息,该网页对每种类型的消息都有不同的结构,即

{type: "messagetype", msg: { /* structure different for each message type */ } }
是否有办法对消息进行“部分”解码,在继续将实际消息解码为go结构之前只检查
type
字段

这是否需要编写一个定制的
编解码器
,一个'la
JSON
,将消息本身委托给JSON编解码器?

用于延迟解码,例如

struct {
    type string
    msg  json.RawMessage
}

json.RawMessage
[]字节
的别名,您可以根据需要进一步解码。

谢谢!我几乎放弃了,但我真的很讨厌我需要使用反射或尝试/捕获不同的解组的想法。这样好多了。