如何将struct的字段类型定义为struct?
我希望能够拥有如下内容:
type HelloResp struct {
Response struct `xml:resp`
}
func (hr *HelloResp) SetHelloResp(interf interface{}) {
hr.Response = interf
}
基本上我有一些其他的子结构我想在HelloResp.Response
下根据需要嵌入,所以它们可以通过函数互换。
这是否可行或是否有任何推荐的Go方式?
答案 0 :(得分:0)
如果您使用innerxml
字段标记,则可以延迟处理,直到您知道结构中的内容为止。为此,您可能需要HTTP标头或提供类型的字段。然后,您可以根据该类型解组响应内容。
type HelloResp struct {
ResponseType string `xml:responseType`
Response []byte `xml:response,innerxml`
}
如果struct有一个类型为[] byte或字符串且带有标记",innerxml"的字段,则Unmarshal会累积嵌套在该字段中元素内的原始XML。其余规则仍然适用。
另一个(不太可取的)选项是将所有可能包含的类型列为指针。 unmarshaller将填充它找到的那个。您需要弄清楚哪一个已设置,因此无论哪种方式都需要响应类型。