首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去访问{接口{}\[]接口{}]的索引?

去访问{接口{}\[]接口{}]的索引?
EN

Stack Overflow用户
提问于 2022-01-26 10:51:38
回答 1查看 33关注 0票数 -1

我的接口有点问题,ı不能共享任何代码原因,造成这个问题的原因有很多代码行。所以这里有个问题,我需要访问这个[]接口{}元素,但是它给了我一个错误,比如(接口{})不支持索引--任何帮助都是很好的。我现在被困住了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-26 11:35:31

您需要一个类型开关来确定什么是基础类型的接口。请参阅:https://go.dev/tour/methods/16

示例:(https://go.dev/play/p/gSRuHBoQYah):

代码语言:javascript
复制
package main

import (
        "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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70862276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档