go - 如何使用反射访问 map 的 nil 键?

标签 go

我有一个具有 nil-keyed 值的 map :

mapp := map[interface{}]interface{}{
    nil: "a",
}

直接访问它的 nil 键是有效的:

fmt.Println("key[nil]:", mapp[nil])

但是使用反射却不行 - 如何做到这一点?

rmapp := reflect.ValueOf(mapp)
rkey := reflect.ValueOf(interface{}(nil))
rval := rmapp.MapIndex(rmapp.MapIndex(rkey))
fmt.Println("key[nil]:", rval)

这里的非工作代码:
https://play.golang.org/p/6TKN_tDNgV

最佳答案

这是为 interface{} 类型的 nil 值创建 reflect.Value 的一种方法:

rkey := reflect.ValueOf(new(interface{})).Elem()

playground example

关于go - 如何使用反射访问 map 的 nil 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821827/

相关文章:

arrays - 如何在 GoLang 中将项目附加到 []os.FileInfo

multithreading - 防止上下文取消在业务逻辑中间停止函数执行

mongodb - 在 golang 中使用全局 mongo (mgo) 数据库有什么缺点?

HTML 输出被解释为纯文本而不是被接收为 html

node.js - Go 有一个 "infinite call stack"等价物吗?

go - 使用 reflect 模拟 struct.field

go - 使用 go.mod 创建和使用本地模块(go 1.15)

go - 如何为一元 rpc 定义响应 header

go - 内存有效的方式

Go Telegram Bot API 从本地文件上传照片