struct array的range rover地址

时间:2014-09-09 14:10:01

标签: go

我有一个类型为[] Struct的结构数组。当我以下列形式对其进行测距:

for i, val := range mystructarray

我知道val是一个局部变量,它包含mystructarray [i]的副本。是否有更好的方法来迭代mystructarray的地址而不是:

for i := range mystructarray{
    valptr = &mystructarray[i]
}

1 个答案:

答案 0 :(得分:1)

在接收指向切片内容的指针时无法进行迭代(当然,除非它是指针的一部分)。

你的榜样是最好的方法:

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

但请记住,如果你的结构不是很大,并且你不需要通过指针对它们进行操作,那么复制结构可能会更快,并为你提供更清晰的代码。 / p>