【问题标题】:Cannot replace pointer via a struct method无法通过结构方法替换指针
【发布时间】:2019-07-16 20:37:34
【问题描述】:

得到一个返回指针的结构体方法:

func (d *DataMap) Get(p Coord) *CellData {
    return &d.Data[p.X+(p.Y*d.Size)]
}

d.Data 是一个 CellData 数组,它是一个具有多个字段的结构。使用这种方法我可以修改每个字段的内部值,即:

example.Get(p).Something = 123

但我不能这样做:

example.Get(p) = *yada (yada is a *CellData)

我想用我得到的另一个指针替换指针:

cannot assign to example.Get(p)(undefined)

我做错了什么?函数的输出已定义,不知道为什么会出现该错误。现在我通过直接访问数组来解决这个问题。

谢谢。

【问题讨论】:

  • 想知道为什么我的问题被否决了。

标签: pointers go slice


【解决方案1】:

Get 返回一个指针,因此如果您想存储该指针指向的任何内容,您需要在开头添加一个*(指针取消引用):

*(example.Get(p)) = *yada

【讨论】:

  • 啊,试过了,但没有外括号。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多