我阅读了反射文档,我对为什么它没有一个func (v Value) Slice() slice函数有点困惑,该函数从一个包含切片的反射.值中获取底层值。
有没有一种方便的方法可以从 reflect.Value 中获取底层切片?
慕虎7371278
浏览 281回答 1
1回答
缥缈止盈
没有Slice() []T方法 onreflect.Value因为没有对所有切片类型都有效的返回值。例如,Slice() []int仅适用于 int 切片、Slice() []string字符串切片等。由于切片在 memory 中的存储方式,它Slice() []interface{}也不起作用。相反,您可以通过使用该reflect.Value.Interface()方法和类型断言来获取底层切片值:用法示例:slice, ok := value.Interface().([]SliceElemType)if !ok { panic("value not a []MySliceType")}