反映。值字符串未随 SetString() 更改

我在设置反射时遇到了一些麻烦。值,它是不同事物的字符串。


在下面返回一个GetValue()reflect.Value


val, 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()等。如何正确更改字符串的值?


繁星点点滴滴
浏览 69回答 2
2回答

慕村9548890

我可能没有完整的代码,但像这样的东西是有效的:package mainimport (    "fmt"    "reflect")func main() {    s := "test"    value := reflect.ValueOf(&s)    ref := reflect.Indirect(value)    ref.Set(reflect.ValueOf("test1"))    fmt.Printf(s)}

呼啦一阵风

我看到了这样的东西,使用了最后一个回答者的代码。package mainimport (    "fmt"    "reflect")func main() {    s := "test"    ref := reflect.ValueOf(&s).Elem()    ref.Set(reflect.ValueOf("test1"))    fmt.Printf(s)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go