我看到許多問題似乎在問我在問什么,但我沒有看到對一般問題的任何實際回應,只是具體問題。我有一個 int 的 reflect.Value,值為 64。我有一個通過反射得到的切片,切片中項目的類型是 *int。newSlice := reflect.Append(slice, currentRow.Convert(slice.Type().Elem()))slice.Set(newSlice)如果我只是運行它,我會得到panic: reflect.Value.Convert: value of type int cannot be converted to type *int我嘗試運行currentRow.Interface(),但它返回一個無法添加到切片的接口類型指針。那么我該如何正確地做到這一點?我不知道它是 *int 還是 *string 或其他任何東西,我需要它是通用的
2 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
將值復制到變量:
v := reflect.New(currentRow.Type()) v.Elem().Set(currentRow)
將變量的地址添加到切片中:
newSlice := reflect.Append(slice, v) slice.Set(newSlice)

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
如果您有 a reflect.Value
,并且該值是可尋址的,即如果value.CanAddr()
返回 true,則value.Addr()
返回reflect.Value
具有指向該值的指針的 a。
- 2 回答
- 0 關注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消