我的输入是interface{}
,而且我知道它可以是任何类型的数组。
我想读取我输入的元素之一,所以我尝试将我的interface{}
进入一个[]interface{}
,但是 go 会给我以下错误:
恐慌:接口转换:interface {} 是 []map[string]int,而不是 []interface {}
我怎样才能进行这种转换? (如果可能的话,不反映)。
游乐场测试 https://play.golang.org/p/FWt5h2hoONs
Thanks
该解决方案涉及reflect
package https://golang.org/pkg/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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)