go - 用反射设置零指针的地址

标签 go reflection

我正在编写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/

相关文章:

go - Prometheus - 将指标列表发送到 Gauge

c# - 使用反射创建 lambda 表达式,如 x => new { .. }

sql - 在 Go 中泛化 *sql.Rows 扫描

google-app-engine - 如何在 Go 中的 App Engine 上为 OAuth2 使用客户端 ID?

go - 将 echo.Context 转换为 context.Context

Gogoutine调度算法

go - 如何替换 Go 模板中的字符串?

java - 将 libgdx 项目导出为 HTML - 您是否忘记继承所需的模块?

java - 如何从java反射中的方法获取 "genericInfo"

java - 反射性地检查对象是否是方法的有效泛型参数