这是一个非常直接的问题。你如何在Initialize()下面实现reflect?或者这可能吗?func Initialize(v interface{}) { // ... some reflection code}type MyType struct { Name string}func main() { var val *MyType // val is nil before initialize Initialize(val) // val is now &MyType{Name: ""} // ...}```
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
这是如何做到的:
func Initialize(v interface{}) {
rv := reflect.ValueOf(v).Elem()
rv.Set(reflect.New(rv.Type().Elem()))
}
必须使用指向要设置的值的指针调用此函数:
Initialize(&val)
游乐场示例
如果参数类型不是指向指针的指针,则此答案中的代码会出现恐慌。根据您的使用情况,您可能需要在调用 Elem() 之前检查反射值 类型。
- 1 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消