我有一个[] Struct类型的结构数组。当我以以下形式覆盖范围时:

for i, val := range mystructarray

我知道val是一个局部变量,其中包含mystructarray [i]的副本。有没有比这更好的方法遍历mystructarray的地址了:
for i := range mystructarray{
    valptr = &mystructarray[i]
}

最佳答案

在接收到指向 slice 内容的指针时无法进行迭代(当然,除非它是指针的 slice )。

您的示例是最好的方法:

for i := range mySlice {
    x = &mySlice[i]
    // do something with x
}

但是请记住,如果结构不是很大,并且不需要通过指针对其进行操作,则复制该结构可能会更快,并为您提供更清晰的代码。

关于go - 结构数组的范围漫游器地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25746800/

10-08 22:03