我阅读了反映文档,我有点困惑为什么它没有func (v Value) Slice() slice
函数,从反映中获得底层值。
是否有一种方便的方法从反射中获得底层切片。价值吗?
在reflect.Value
上没有Slice() []T
方法,因为没有对所有切片类型有效的返回值。例如,Slice() []int
只适用于int片,Slice() []string
适用于字符串片,等等。Slice() []interface{}
也不会工作,由于片是如何存储在内存中。
相反,您可以通过使用reflect.Value.Interface()
方法和类型断言来获得底层片值:
使用例子:
slice, ok := value.Interface().([]SliceElemType)
if !ok {
panic("value not a []MySliceType")
}