2014-10-11 35 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

相關問題