我有一个类型为[] Struct的结构数组。当我以下列形式对其进行测距:
for i, val := range mystructarray
我知道val是一个局部变量,它包含mystructarray [i]的副本。是否有更好的方法来迭代mystructarray的地址而不是:
for i := range mystructarray{
valptr = &mystructarray[i]
}
答案 0 :(得分:1)
在接收指向切片内容的指针时无法进行迭代(当然,除非它是指针的一部分)。
你的榜样是最好的方法:
for i := range mySlice {
x = &mySlice[i]
// do something with x
}
但请记住,如果你的结构不是很大,并且你不需要通过指针对它们进行操作,那么复制结构可能会更快,并为你提供更清晰的代码。 / p>