我从下面的代码中收到以下错误:
typedSlice 的无效间接(type interface {})
不能覆盖 typedSlice(类型 interface {})
这让我感到困惑,因为reflect.TypeOf(copy)匹配t.
func Unmarshal(t reflect.Type) []interface{} {
ret := []interface{}{}
s := `[{"Name":"The quick..."}]`
slice := reflect.Zero(reflect.SliceOf(t))
o := reflect.New(slice.Type())
o.Elem().Set(slice)
typedSlice := o.Interface()
json.Unmarshal([]byte(s), typedSlice)
fmt.Println(typedSlice) // &[{The quick...}]
fmt.Println(reflect.TypeOf(typedSlice)) //same type as t
fmt.Println(*typedSlice) // invalid indirect of copy (type interface {})
for _, l := range typedSlice { //cannot range over copy (type interface {})
ret = append(ret, &l)
}
return ret
}
我创建了一个带有工作代码的go 游乐场来提供帮助。
为什么看起来这个切片打印一种类型但编译为另一种类型?
料青山看我应如是
相关分类