如何将接口转换为接口切片?

Bor*_*s K 5 go

我的输入是一个interface{},我知道它可以是任何类型的数组。

我想读取输入的元素之一,因此我尝试将 my 转换interface{}为 an []interface{},但是 go 会给我以下错误:

恐慌:接口转换:interface {} 是 []map[string]int,而不是 []interface {}

我怎样才能进行这种转换?(如果可能的话,不反映)。

游乐场测试

谢谢

小智 9

reflect 涉及包的解决方案。

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var v interface{} = []string{"a", "b", "c"}

    var out []interface{}
    rv := reflect.ValueOf(v)
    if rv.Kind() == reflect.Slice {
        for i := 0; i < rv.Len(); i++ {
            out = append(out, rv.Index(i).Interface())
        }
    }
    fmt.Println(out)
}
// Output:
// [a b c]
Run Code Online (Sandbox Code Playgroud)