我有一个具有 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()
关于go - 如何使用反射访问 map 的 nil 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821827/