请问如何在下面这种情况下通过反射给结构体赋值?

humin_3306 · · 1009 次点击
<a href="/user/jarlyyn" title="@jarlyyn">@jarlyyn</a> 不还意思。。。。我知道,在最外层的时候,掉一个方法可以主动传一个地址进去,但是在方法内部,动态的时候,怎么办呢?比如func F1(a interface{}){ reflect.ValueOf(&amp;a).Elem().FieldByName(&#34;xx&#34;).SetString(&#34;xx&#34;) } 就会报错,报的好像是不能再接口类型上调用SetString,而且无论怎么调用Elem方法获取原始值,都会报错,但是在调用F1()方法的时候,取地址就不会报错,这样 F1(&amp;xxx)
#4
更多评论
struct 值类型,传递的时候是副本。 所以你不能在方法里面修改原始的值。 所以应该传指针
#1
不是,如果要在f1里递归的话,就没办法在调用reflect.valueof()的时候使用取符了,因为方法的形式参数是interface{},去过对这个参数取地址再调用elem()方法,又会报其他错误,再调elem方法也一样,再外面调用的时候,可以对实参取地址,就没问题
#2