Go - 如何将结构字段的数据类型定义为另一个结构



如何将结构的字段类型定义为struct?

我希望能够有如下的东西:

type HelloResp struct {
  Response struct `xml:resp`
}
func (hr *HelloResp) SetHelloResp(interf interface{}) {
  hr.Response = interf
}

基本上,我有一些其他的子结构,我想根据需要嵌入到HelloResp.Response下,这样它们就可以通过函数互换。

这有可能吗?或者有什么推荐的Go方法吗?

如果使用innerxml字段标记,则可以延迟处理,直到您知道结构内部有什么。为此,您可能需要一个HTTP标头或一个提供类型的字段。然后根据该类型对响应内容进行解组。

type HelloResp struct {
    ResponseType string `xml:responseType`
    Response []byte `xml:response,innerxml`
}

如果结构具有[]字节类型的字段或标记为",innerxml"的字符串,则Unmarshal会累积该字段中嵌套在元素内的原始XML。其余规则仍然适用。

另一个(不太可取的)选项是将所有可能包含的类型列为指针。解组程序将填充它找到的一个或多个。不过,您需要弄清楚设置了哪一个,所以无论哪种方式都需要响应类型。

最新更新