我有一個(gè)這樣的結(jié)構(gòu):type User struct { Name string UID int Bio string}我有一個(gè)給定的實(shí)例化結(jié)構(gòu),我想循環(huán)遍歷該對(duì)象中的字段并一一修改它們。這就是我到目前為止所擁有的user := User{ Name: "Test", UID: 1, Bio: "Test bio",}reflectVal := reflect.ValueOf(user)numFields := reflectVal.NumField()for i := 0; i < numFields; i++ { fieldType := reflect.TypeOf(reflectVal.Field(i)) reflectVal.Field(i).Set(reflect.Zero(fieldType)) ...}但我收到這個(gè)錯(cuò)誤:panic: reflect: reflect.Value.Set using unaddressable value有沒(méi)有辦法做到這一點(diǎn)?
1 回答

qq_花開花謝_0
TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
反射值不可尋址。通過(guò)從指向結(jié)構(gòu)的指針創(chuàng)建反射值來(lái)修復(fù)。
reflectVal?:=?reflect.ValueOf(&user).Elem()
使用以下語(yǔ)句獲取字段的類型。問(wèn)題中的代碼獲取reflect.Value 的類型,而不是reflect.Value 中包含的值的類型。
fieldType?:=?reflectVal.Field(i).Type()
- 1 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報(bào)
0/150
提交
取消