我有一個這樣的結構:type User struct { Name string UID int Bio string}我有一個給定的實例化結構,我想循環遍歷該對象中的字段并一一修改它們。這就是我到目前為止所擁有的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)) ...}但我收到這個錯誤:panic: reflect: reflect.Value.Set using unaddressable value有沒有辦法做到這一點?
1 回答

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
反射值不可尋址。通過從指向結構的指針創建反射值來修復。
reflectVal?:=?reflect.ValueOf(&user).Elem()
使用以下語句獲取字段的類型。問題中的代碼獲取reflect.Value 的類型,而不是reflect.Value 中包含的值的類型。
fieldType?:=?reflectVal.Field(i).Type()
- 1 回答
- 0 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消