1 回答

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
unmarshal 函數(shù)遍歷指針和包含指針值的接口以找到目標(biāo)值。接口中的非指針值將被忽略,因?yàn)檫@些值不可尋址。(此描述省略了對(duì)問(wèn)題不重要的細(xì)節(jié))。
如果目標(biāo)是 aninterface{}
并且 JSON 是對(duì)象,則 JSON 被解組為 amap[string]interface{}
并將該值存儲(chǔ)在接口中。
測(cè)試 1:解組的參數(shù)是*Test
。unmarshal 函數(shù)遍歷指針并解碼為Test
結(jié)構(gòu)。
測(cè)試 2:unmarshal 的參數(shù)是指向interface{}
包含Test
.?unmarshal 函數(shù)遍歷指針以獲取interface{}
.?Test
中的值被interface{}
忽略,因?yàn)樗豢蓪ぶ?。因?yàn)槟繕?biāo)是 aninterface{}
而 JSON 是對(duì)象,所以 JSON 被解碼為map[string]interface{}
.
3、4、5 和 6 中的代碼無(wú)法編譯。假設(shè)刪除了{}
以下內(nèi)容,我將繼續(xù)Test
。
var o2 Test = o // 3
var o2 *Test = &o // 4
var o2 *Test = &o // 5
var o2 *Test = &o // 6
測(cè)試 3 和 5:unmarshal 的參數(shù)是一個(gè)*Test
.?這與#1 相同。
測(cè)試 4 和 6:參數(shù)是一個(gè)**Test
.?unmarshal 函數(shù)遍歷指針并解碼到Test
結(jié)構(gòu)。
因?yàn)?Go 沒(méi)有任何類似“超類”的東西,所以這不是問(wèn)題。
- 1 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報(bào)