我正在寻找类似下面的python片段
的东西indexes = [0,4]
nestedArray = [[1,2,3,4,5],[6,7,8]] # could be [][][]string, [][][][]float.. etc
def getNestedIndex(nestedArray, indexes):
curr = nestedArray
while indexes {
curr = nestedArray[indexes.pop(0)]
}
return curr # should be 5
我试过这样的事情
func nestedArrayIndex(slice []interface{}, indexes []int) interface{} {
if len(indexes) == 1 {
return slice[indexes[0]]
}
var newSlice []interface{}
newSlice = slice[indexes[0]]
return nestedArrayIndex(newSlice, indexes[1:])
}
但这里发生了两件事 - []Type != []interface{}
和[][]..Type
肯定不会在这里发挥作用。
想知道是否有办法实现这一目标?
答案 0 :(得分:2)
您可以使用reflect
执行此操作。 reflect.Value
有一个方法Index
,用于在Value
下面的切片中获取索引项。
func nestedArrayIndex(slice interface{}, indexes []int) interface{} {
v := reflect.ValueOf(slice)
for _, i := range indexes {
v = v.Index(i)
}
return v.Interface()
}