如何通过reflect.Value获取切片底层值

时间:2015-10-01 14:28:48

标签: reflection go

我读了reflect document并且我对它为什么没有func (v Value) Slice() slice函数感到困惑,该函数从一个reflect.Value得到基础值。切入。

是否有方便的方法从reflect.Value获取底层切片?

1 个答案:

答案 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")
}