如何將 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 } }我得到一個錯誤panic: interface conversion: interface {} is []string, not []interface {} 我想讓這個方法足夠通用以處理任何類型,而不是固定類型。我是 Go 的新手,我一直被這個問題困擾,很可能我做錯了。有什么建議我怎樣才能解決這個問題?編輯: 一些操作是json.Marshal返回字節(jié)數(shù)組。我真正想做的是: 我有一個接收接口類型的函數(shù),如果它是一個數(shù)組/切片,那么我想在每個項目上運(yùn)行 json.Marshal 而不是將它作為一個整體應(yīng)用?;旧?,如果第一級對象是數(shù)組,我會嘗試分解 JSON blob,是的,它需要是通用的。
1 回答
梵蒂岡之花
TA貢獻(xiàn)1900條經(jīng)驗 獲得超5個贊
如錯誤消息所述,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)注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消
