reflect.Value.MapIndex()返回一个与reflect.ValueOf()不同的值

根据反映,文档reflect.Value.MapIndex()应返回reflect.Value,表示存储在地图特定键处的数据的值。因此,我的理解是以下两个表达式应该相同。在第一种情况下,我们从获得结果MapIndex()。在第二个中,我们从MapIndex()获取基础数据中获取结果,然后对其进行reflect.ValueOf()处理。


reflect.ValueOf(map).MapIndex("Key")

reflect.ValueOf(reflect.ValueOf(map).MapIndex("Key").Interface())

为什么reflect.ValueOf()需要额外的费用?


示例代码:


package main


import "fmt"

import "reflect"


func main() {

    test := map[string]interface{}{"First": "firstValue"}

    Pass(test)

}


func Pass(d interface{}) {

    mydata := reflect.ValueOf(d).MapIndex(reflect.ValueOf("First"))

    fmt.Printf("Value: %+v \n", mydata.Interface())

    fmt.Printf("Kind: %+v \n", mydata.Kind())

    fmt.Printf("Kind2: %+v \n", reflect.ValueOf(mydata.Interface()).Kind())

}

播放:http://play.golang.org/p/TG4SzrtTf0


呼唤远方
浏览 352回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go