我阅读了反射文档,我对它为什么没有func (v Value) Slice() slice函数感到有点困惑,这个函数从一个包含切片的reflect.Value中获取基础值.
有没有一种方便的方法从reflect.Value获取底层切片?
没有Slice() []T方法,reflect.Value因为没有对所有切片类型有效的返回值.例如,由于切片存储在内存中的方式,Slice() []int仅适用于int切片,Slice() []string字符串切片等Slice() []interface{}也不起作用.
相反,您可以通过使用该reflect.Value.Interface()方法以及类型断言来获取基础切片值:
用法示例:
slice, ok := value.Interface().([]SliceElemType)
if !ok {
panic("value not a []MySliceType")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3492 次 |
| 最近记录: |