我想将 struct 的指针传递给期望 interface{} 的函数。然后(通过反射)获取指向结构成员的指针,然后使用此指针修改它。我已经阅读了很多问答并尝试了很多变化,但我仍然可以让它工作。
让我们考虑下面的例子:
type Robot struct {
Id int
}
f := func(i interface {}) {
v := reflect.ValueOf(i).Elem().FieldByName("Id")
ptr := v.Addr().Pointer()
*ptr = 100
//^ it needs to me for functions expecting the pointer: Scan(&pointerToValue)
}
robot := &Robot{}
f(robot)
println(robot.Id) //I want to get here 100
我认为问题在于对反射包的Addr()和Pointer()方法实际上做了什么了解不深..
拉莫斯之舞
相关分类