我在设置反射时遇到了一些麻烦。值,它是不同事物的字符串。在下面返回一个GetValue()reflect.Valueval, err := exp.GetFact(t.(*api.Event_Set).Set.Key).GetValue()if err != nil { ref := reflect.Indirect(val) ref.SetString(t.(*api.Event_Set).Set.Value)}在击中SetString时,它会引发恐慌:panic: reflect: reflect.Value.SetString using unaddressable value我尝试了不同的语法,即没有间接,Elem()等。如何正确更改字符串的值?
2 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
我可能没有完整的代码,但像这样的东西是有效的:
package main
import (
"fmt"
"reflect"
)
func main() {
s := "test"
value := reflect.ValueOf(&s)
ref := reflect.Indirect(value)
ref.Set(reflect.ValueOf("test1"))
fmt.Printf(s)
}
呼啦一阵风
TA贡献1802条经验 获得超6个赞
我看到了这样的东西,使用了最后一个回答者的代码。
package main
import (
"fmt"
"reflect"
)
func main() {
s := "test"
ref := reflect.ValueOf(&s).Elem()
ref.Set(reflect.ValueOf("test1"))
fmt.Printf(s)
}
- 2 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消