如何将结构的字段类型定义为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。其余规则仍然适用。
另一个(不太可取的)选项是将所有可能包含的类型列为指针。解组程序将填充它找到的一个或多个。不过,您需要弄清楚设置了哪一个,所以无论哪种方式都需要响应类型。