我正在尝试创建一个元素数组,其类型仅在运行时已知(pkg API 获取 json 中的元素并转换为结构)。我有一个类似下面的辅助函数,它将一个接口作为参数,并在调用 make 时尝试获取接口的类型。golang 编译器似乎不喜欢它。var whatAmI = func(i interface{}) { a := reflect.TypeOf(i) //var typ reflect.Type = a b := make (a, 10) //10 elem with type of i //b := new (typ) fmt.Printf ("a: %v b: %v", a, b)}prog.go:21:14: a 不是类型我尝试了各种反射组合,但到目前为止没有帮助。在我看来,这可能是一个常见的问题。我该如何解决/解决这个问题?
2 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
获取给定元素类型值的切片的类型v
:
sliceType := reflect.SliceOf(reflect.TypeOf(v))
创建一个具有长度和容量的切片(此处均为 10)。
slice:= reflect.MakeSlice(sliceType, 10, 10)
根据您的操作,您可能希望通过调用 reflect.Value 上的 Interface() 来获取实际的切片值:
s := slice.Interface()
- 2 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消