我知道在 Go 中編寫泛型函數并不慣用,但我想在深入研究go generate.我遇到的問題是Value.Call()返回一個切片,其中我感興趣的元素是指向自定義結構的指針。似乎我找不到訪問它的方法。returns := listMethod.Call([]reflect.Value{reflect.ValueOf(filter)})
fmt.Println(returns)輸出[<vspk.EnterpriseProfilesList Value> <*bambou.Error Value>]類型定義:type EnterpriseProfilesList []*EnterpriseProfile我想訪問vspk.EnterpriseProfilesList,但我正在努力做到這一點。如果我嘗試像這樣檢索底層值:returns := listMethod.Call([]reflect.Value{reflect.ValueOf(filter)})
ret1 := returns[0].Interface()
fmt.Println(ret1)我收到[0xc0000fc7e0]
1 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
Value.Call()
返回類型為 的值[]reflect.Value
。您感興趣的是該切片的第一個值:returns[0]
。
這當然是類型reflect.Value
。要提取其中包含的值,請使用Value.Interface()
.
這將是類型interface{}
。如果您需要具體類型,請使用類型斷言:
returns[0].Interface().(spk.EnterpriseProfilesList)
例如:
if list, ok := returns[0].Interface().(spk.EnterpriseProfilesList); ok {
? ? // here list is of type spk.EnterpriseProfilesList
} else {
? ? // it was nil or not of type spk.EnterpriseProfilesList
}
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消