【问题标题】:range over addressess of struct array结构数组的地址范围
【发布时间】:2014-09-09 14:10:01
【问题描述】:

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

for i, val := range mystructarray

我知道 val 是一个包含 mystructarray[i] 副本的局部变量。有没有比这更好的方法来遍历 mystructarray 的地址:

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

?

【问题讨论】:

  • 问题的答案可能会重叠,但这个问题实际上是在问一个不同的问题。来网站寻找我问题答案的人不一定会找到另一个人。

标签: go


【解决方案1】:

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

你的例子是最好的方法:

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

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

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多