我的输入是一个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)