如何通过 reflect.Value 获取切片底层价值
How to get slice underlying value via reflect.Value
我读了 reflect document 但我有点困惑为什么它没有 func (v Value) Slice() slice
函数,该函数从 reflect.Value 中获取基础值一片。
有没有方便的方法从 reflect.Value 获取底层切片?
reflect.Value
上没有 Slice() []T
方法,因为没有 return 值对所有切片类型都有效。例如,Slice() []int
仅适用于 int 切片,Slice() []string
适用于字符串切片等。Slice() []interface{}
也不起作用,due to how the slice is stored in memory.
相反,您可以使用 reflect.Value.Interface()
method along with a type assertion:
获取基础切片值
用法示例:
slice, ok := value.Interface().([]SliceElemType)
if !ok {
panic("value not a []MySliceType")
}
我读了 reflect document 但我有点困惑为什么它没有 func (v Value) Slice() slice
函数,该函数从 reflect.Value 中获取基础值一片。
有没有方便的方法从 reflect.Value 获取底层切片?
reflect.Value
上没有 Slice() []T
方法,因为没有 return 值对所有切片类型都有效。例如,Slice() []int
仅适用于 int 切片,Slice() []string
适用于字符串切片等。Slice() []interface{}
也不起作用,due to how the slice is stored in memory.
相反,您可以使用 reflect.Value.Interface()
method along with a type assertion:
用法示例:
slice, ok := value.Interface().([]SliceElemType)
if !ok {
panic("value not a []MySliceType")
}