【问题标题】:Range over alias of slice of pointers指针切片别名的范围
【发布时间】:2020-06-27 09:40:59
【问题描述】:

我有以下结构(其中 Vector3 是自定义结构)

type Polygon []*Vector3

如何使用 Polygon 的 Vector3 迭代(使用范围)底层切片?

例子:

func (p *Polygon) print() {
    for _, v := range p { // not allowed!! :(
       // do something
    }
}

【问题讨论】:

  • p 是一个指针,先解引用再迭代。例如for ... := range *p { ....
  • 或者,您可以在非指针接收器类型上声明该方法,即func (p Polygon) print() {...,然后您不必取消引用,您的原始尝试将按预期工作。

标签: go


【解决方案1】:

您不能在指针上进行范围。这里p*Polygon 表示Polygon 类型的指针。因此,取消引用指向范围的指针。

*用于dereference指针变量。

func (p *Polygon) print() {
    for _, v := range *p {
        // do something
    }
}

【讨论】:

    猜你喜欢
    • 2018-10-07
    • 2015-05-01
    • 1970-01-01
    • 2011-02-26
    • 2019-05-09
    • 1970-01-01
    • 2019-05-16
    • 2015-02-21
    相关资源
    最近更新 更多