我在設置反射時遇到了一些麻煩。值,它是不同事物的字符串。在下面返回一個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 關注
- 100 瀏覽
添加回答
舉報
0/150
提交
取消