如何將 interface{} 轉(zhuǎn)換為 []interface{} ?rt := reflect.ValueOf(raw)switch rt.Kind() {case reflect.Slice: src := raw.([]interface{}) //this operation errors out for _,_ := range src { //some operation } }我得到一個(gè)錯(cuò)誤panic: interface conversion: interface {} is []string, not []interface {} 我想讓這個(gè)方法足夠通用以處理任何類型,而不是固定類型。我是 Go 的新手,我一直被這個(gè)問題困擾,很可能我做錯(cuò)了。有什么建議我怎樣才能解決這個(gè)問題?編輯: 一些操作是json.Marshal返回字節(jié)數(shù)組。我真正想做的是: 我有一個(gè)接收接口類型的函數(shù),如果它是一個(gè)數(shù)組/切片,那么我想在每個(gè)項(xiàng)目上運(yùn)行 json.Marshal 而不是將它作為一個(gè)整體應(yīng)用?;旧希绻谝患?jí)對(duì)象是數(shù)組,我會(huì)嘗試分解 JSON blob,是的,它需要是通用的。
1 回答

梵蒂岡之花
TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
如錯(cuò)誤消息所述,a[]string
不是[]interface{}
.?
一般使用反射 API 來執(zhí)行此操作:
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
? ? }
}
- 1 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報(bào)
0/150
提交
取消