1 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
從 reflect.ValueOf 返回的值包含存儲(chǔ)在參數(shù)中的具體值。如果參數(shù)為 nil,則返回零 reflect.Value。
換句話說,reflect.Value 和傳遞給 reflect.Value 的接口具有相同的基礎(chǔ)值。
如果您更改main1
為:main2
f
func f(x interface{}) { // print x's underlying value fmt.Println(reflect.ValueOf(x)) }
f
in的參數(shù)main3
是一個(gè)*struct{}
. 該函數(shù)f
取消引用指針(通過調(diào)用 Elem())并打印struct{}
.
可能令人困惑的一點(diǎn)是,reflect.ValueOf(ptr).Elem().Elem().Interface()
andreflect.ValueOf(ptr).Elem().Interface()
返回一個(gè)具有相同具體值的接口。
表達(dá)式reflect.ValueOf(ptr).Elem()
是 對(duì)應(yīng)的反射值i
。對(duì)該值的調(diào)用Interface()
返回一個(gè)具有具體值的接口i
。
表達(dá)式是對(duì)應(yīng)于具體值的reflect.ValueOf(ptr).Elem().Elem()
反映值。對(duì)該值的i
調(diào)用返回一個(gè)包含該具體值的接口。Interface()
- 1 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)