1 回答

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
convertedObject是object接口中內(nèi)容的值。取那個(gè)地址對原來的沒有影響customer。(并且被轉(zhuǎn)換可能是名稱的一個(gè)糟糕的前綴,因?yàn)樗菑摹邦愋蛿嘌浴倍皇恰邦愋娃D(zhuǎn)換”生成的)
如果您直接使用 object,它會發(fā)生恐慌,因?yàn)槟讷@取接口的地址,而不是客戶。
您需要將要修改的客戶的地址傳遞給函數(shù):
SetAttribute(&customer, "Local", addressNew, reflect.TypeOf(Customer{}))
您還可以先檢查 SetAttribute 是否為指針:
if reflect.ValueOf(object).Kind() != reflect.Ptr {
panic("need a pointer")
}
value := reflect.ValueOf(object).Elem()
field := value.FieldByName(attributeName)
valueForAtt := reflect.ValueOf(attValue)
field.Set(valueForAtt)
return value.Interface()
- 1 回答
- 0 關(guān)注
- 196 瀏覽
添加回答
舉報(bào)