调用方法的时候,参数不能特意去取地址,或者递归的时候,怎么拿到一个对象的指针呢?
![err.png](https://static.studygolang.com/190416/51e83a1a0b1505b020f547ef5780b487.png)
<a href="/user/jarlyyn" title="@jarlyyn">@jarlyyn</a> 不还意思。。。。我知道,在最外层的时候,掉一个方法可以主动传一个地址进去,但是在方法内部,动态的时候,怎么办呢?比如func F1(a interface{}){
reflect.ValueOf(&a).Elem().FieldByName("xx").SetString("xx")
}
就会报错,报的好像是不能再接口类型上调用SetString,而且无论怎么调用Elem方法获取原始值,都会报错,但是在调用F1()方法的时候,取地址就不会报错,这样 F1(&xxx)
#4
更多评论
不是,如果要在f1里递归的话,就没办法在调用reflect.valueof()的时候使用取符了,因为方法的形式参数是interface{},去过对这个参数取地址再调用elem()方法,又会报其他错误,再调elem方法也一样,再外面调用的时候,可以对实参取地址,就没问题
#2