第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 反射 MethodByName()

Golang 反射 MethodByName()

Go
森林海 2022-05-23 17:39:46
我編寫的代碼根據(jù)其類型填充數(shù)據(jù)結(jié)構(gòu)。如果存在,我需要調(diào)用嵌套結(jié)構(gòu)函數(shù)。為什么當(dāng)字段正確時我在尋找函數(shù)時得到零值?type (    SomeData struct {        Val NestedType    }    NestedType struct {        V1 string    })func (t *NestedType) FillData(v int) {    t.V1 = fmt.Sprintf("Here is %v", v)}func main() {    i := SomeData{}    reflect.ValueOf(&i.Val).MethodByName("FillData").Call([]reflect.Value{reflect.ValueOf(555)})    fmt.Println(i) /// {{I hate 555}}    // BUT!    v := 666    newObj := reflect.New(reflect.TypeOf(SomeData{}))    fVal := newObj.Elem().FieldByName("Val")    fmt.Println( "fVal.NumField():", fVal.NumField()) //fVal.NumField(): 1    f := fVal.MethodByName("FillData")    f.Call([]reflect.Value{reflect.ValueOf(v)}) //panic: reflect: call of reflect.Value.Call on zero Value}
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗 獲得超10個贊

該方法在指針接收器上。值為fValNestedType。調(diào)用Value.Addr以獲得*NestedType

    f := fVal.Addr().MethodByName("FillData")

在操場上運行它。


查看完整回答
反對 回復(fù) 2022-05-23
  • 1 回答
  • 0 關(guān)注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號