首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cast接口{} to []接口{}

cast接口{} to []接口{}
EN

Stack Overflow用户
提问于 2019-02-06 00:18:31
回答 1查看 532关注 0票数 0

如何将接口{}转换为[]接口{}?

代码语言:javascript
复制
rt := reflect.ValueOf(raw)
switch rt.Kind() {
case reflect.Slice:
    src := raw.([]interface{}) //this operation errors out
    for _,_ :=  range src {
        //some operation
    }  
}

我得到一个错误panic: interface conversion: interface {} is []string, not []interface {},我想使这个方法足够通用,以处理任何类型,而不是固定类型。

我是新来的,我被这个问题困住了,很可能我做错了。有什么建议吗?我怎么才能绕过这件事?

编辑:某些操作是返回字节数组的json.Marshal

我真正想要做的是:我有一个接收接口类型的函数,如果它是一个数组/片,那么我希望对每个条目运行json.Marshal,而不是将它作为一个整体应用。基本上,如果第一级对象是一个数组,那么我将尝试拆分JSON,是的,它需要是泛型的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-06 01:54:27

正如错误消息所述,[]string不是[]interface{}。有关解释,请参见常见问题

一般地使用反射API对此进行如下操作:

代码语言:javascript
复制
v := reflect.ValueOf(raw)
switch v.Kind() {
case reflect.Slice:
    for i := 0; i < v.Len(); i++ {
        elem := v.Index(i).Interface()
        // elem is an element of the slice
    }
}

在游乐场上跑

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54545009

复制
相关文章

相似问题

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