我有一个[] 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/