如何將 interface{} 轉換為 []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返回字節數組。我真正想做的是: 我有一個接收接口類型的函數,如果它是一個數組/切片,那么我想在每個項目上運行 json.Marshal 而不是將它作為一個整體應用?;旧?,如果第一級對象是數組,我會嘗試分解 JSON blob,是的,它需要是通用的。
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
如錯誤消息所述,a[]string
不是[]interface{}
.?
一般使用反射 API 來執行此操作:
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 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消