pointers - 无法通过结构方法替换指针

标签 pointers go slice

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

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)

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

谢谢。

最佳答案

Get 返回一个指针,所以如果你想存储到该指针指向的任何地方,你需要在开头添加一个 *(指针解引用):

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

关于pointers - 无法通过结构方法替换指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54832362/

相关文章:

json - 如何将 json 转换为未知类型的结构

数组循环内的javascript切片

python - 按名称列表对 Pandas 中的多个列进行切片

c - 将从文件中读取的不同字符串插入到链接列表中

struct - 如何定义嵌入/匿名字段(go struct )

go - 如何处理在 switch case 语句中返回两个对象

python - 如何对每个包含两个列表的列表进行切片?

c - C 中 sizeof 运算符中的参数

c - 从不兼容的指针类型传递 arg 1 of `foo'

c++ - 以无符号整数存储缓冲区地址;