據(jù)說可以interface{}代表Go中的任何類型。例如,讓我們考慮一個Marshal函數(shù),encoding/json該函數(shù)用于將Go數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON字符串。它的定義是func Marshal(v interface{}) ([]byte, error) 但是我們將一個結(jié)構(gòu)作為參數(shù)傳遞給它,如下所示。type hello struct{ Message string}data,err:= json.Marshal(hello{Message:'Hello world'})Go如何處理呢?
1 回答

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
答案是運行時反射。
從文檔:
包反射實現(xiàn)了運行時反射,從而允許程序處理任意類型的對象。典型的用法是使用靜態(tài)類型interface {}獲取值,并通過調(diào)用TypeOf來提取其動態(tài)類型信息,該類型將返回Type。
- 1 回答
- 0 關(guān)注
- 255 瀏覽
添加回答
舉報
0/150
提交
取消