我正在编写Go Application,并试图找出如何使用反射创建nil
指针并设置其值。
我创建了一个小代码来演示我要实现的目标:
包主
import (
"log"
"reflect"
)
func main() {
var myV *int
v := reflect.ValueOf(myV)
t := reflect.TypeOf(myV)
myP := reflect.New(t.Elem())
myP.Elem().SetInt(5)
v.Set(myP) <-- PANIC HERE
log.Print(v.Interface())
}
所以在这里我声明了一个int
指针变量,并使用反射创建了一个新实例并将该指针设置为该地址,但是我没有设置指针地址。我得到错误:
panic: reflect: reflect.Value.Set using unaddressable value
我究竟做错了什么 ?谢谢
最佳答案
好的,谢谢@mkopriva的评论,我能够解决它。多谢 :)
var myV *int
v := reflect.ValueOf(&myV)
t := reflect.TypeOf(myV)
myP := reflect.New(t.Elem())
myP.Elem().SetInt(5)
v.Elem().Set(myP)
关于go - 用反射设置零指针的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64211864/