Go lang 访问 {interface{} | []interface{}] 的索引?

我的接口有点麻烦,我不能分享导致这个问题的任何代码原因是多行代码的结果。所以这里有问题,我需要访问这个 []interface{} 元素,但它给了我一个错误,比如(interface{}) 不支持索引任何帮助都会很棒。我现在被困住了。 

http://img3.mukewang.com/635f7d760001924606551029.jpg

临摹微笑
浏览 130回答 1
1回答

万千封印

您需要一个类型开关来确定接口底层类型是什么。见:https ://go.dev/tour/methods/16示例:(https://go.dev/play/p/gSRuHBoQYah):package mainimport (        "encoding/json"        "fmt"        "log")func printInterface(o interface{}) {        switch v := o.(type) {        case map[string]interface{}:                fmt.Printf("this is a map. a: %+v\n", v["a"])        case []interface{}:                fmt.Printf("this is a slice, len: %d, v[0] is: %+v, type: %T\n", len(v), v[0], v[0])        default:                fmt.Printf("this is %T\n", v)        }}func main() {        var result1 interface{}        listOfObjects := `[{"a":1}, {"a":2}]`        if err := json.Unmarshal([]byte(listOfObjects), &result1); err != nil {                log.Fatal(err)        }        printInterface(result1)        var result2 interface{}        singleObject := `{"a":1, "b":2}`        if err := json.Unmarshal([]byte(singleObject), &result2); err != nil {                log.Fatal(err)        }        printInterface(result2)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go