gpt4 book ai didi

go - 递归索引任意嵌套的 slice/数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:03:39 25 4
gpt4 key购买 nike

我正在寻找类似于下面的 python 代码段的 go 等价物

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 在这里绝对不起作用。

想知道是否有办法在 go 中实现这一点?

最佳答案

您可以使用 reflect 来做到这一点。 reflect.Value 有一个方法 Index 用于获取 Value 下的 slice 中的索引项。

func nestedArrayIndex(slice interface{}, indexes []int) interface{} {
v := reflect.ValueOf(slice)
for _, i := range indexes {
v = v.Index(i)
}
return v.Interface()
}

Playground :https://play.golang.org/p/Tmdomx18qPg

关于go - 递归索引任意嵌套的 slice/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48232534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com