我阅读了反射文档,我对为什么它没有一个func (v Value) Slice() slice函数有点困惑,该函数从一个包含切片的反射.值中获取底层值。有没有一种方便的方法可以从 reflect.Value 中获取底层切片?
1 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
没有Slice() []T方法 onreflect.Value因为没有对所有切片类型都有效的返回值。例如,Slice() []int仅适用于 int 切片、Slice() []string字符串切片等。由于切片在 memory 中的存储方式,它Slice() []interface{}也不起作用。
相反,您可以通过使用该reflect.Value.Interface()方法和类型断言来获取底层切片值:
用法示例:
slice, ok := value.Interface().([]SliceElemType)
if !ok {
panic("value not a []MySliceType")
}
- 1 回答
- 0 关注
- 280 浏览
添加回答
举报
0/150
提交
取消