我读了reflect document并且我对它为什么没有func (v Value) Slice() slice
函数感到困惑,该函数从一个reflect.Value得到基础值。切入。
是否有方便的方法从reflect.Value获取底层切片?
答案 0 :(得分:7)
Slice() []T
上没有reflect.Value
方法,因为没有对所有切片类型有效的返回值。例如,Slice() []int
仅适用于int切片,Slice() []string
适用于字符串切片等。Slice() []interface{}
也不起作用,due to how the slice is stored in memory。
相反,您可以使用reflect.Value.Interface()
方法和type assertion来获取基础切片值:
使用示例:
slice, ok := value.Interface().([]SliceElemType)
if !ok {
panic("value not a []MySliceType")
}