2014-10-11 136 views
0

如何将struct的字段类型定义为struct?转到 - 如何将struct字段的数据类型定义为另一个struct

我希望能有类似如下:

type HelloResp struct { 
    Response struct `xml:resp` 
} 

func (hr *HelloResp) SetHelloResp(interf interface{}) { 
    hr.Response = interf 
} 

基本上我有几个其他孩子的结构我想嵌入HelloResp.Response下根据需要使它们的功能互换。

这是否可以或有推荐的Go方式吗?

回答

0

如果使用innerxml字段标记,则可以延迟处理,直到知道结构中有什么为止。要做到这一点,你可能需要一个HTTP头或一个给出类型的字段。然后您根据该类型解组响应内容。

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

如果结构有类型[]字节或字符串标签“ innerxml”的一个字段,解组累积嵌套在该字段中的元素内的原始XML。其余规则仍然适用。

另一个(不太需要的)选项是将所有可能包含的类型列为指针。解组人将填充它找到的人。你需要弄清楚哪一个是被设置的,所以响应类型将会被需要。

+0

我不想使用unmarshall,因为它使用了反射,而且对性能不好。我将不得不尝试使用指针并动态指向结构级别 – 2014-10-11 11:04:09

+0

您已经在使用unmarshall。第一种方法只是延迟嵌入式结构的处理。 – 2014-10-11 12:17:15

+0

你是否介绍了你的应用程序?解除瓶颈? – RickyA 2014-10-13 13:32:17