doushen1026 2019-02-22 17:35 采纳率: 100%
浏览 49
已采纳

无法通过struct方法替换指针

Got a struct method that returns a pointer:

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

The d.Data is an array of CellData which is a struct with several fields. With this method I can modify the inner value of each field, ie:

example.Get(p).Something = 123

But I cannot do something like this:

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

Where I want to replace the pointer with another pointer I get:

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

What am I doing wrong? The output of the function is defined, dont' know why I'm getting that error. Right now I fixed this by accessing the array directly.

Thanks.

  • 写回答

1条回答 默认 最新

  • dongta5747 2019-02-22 17:45
    关注

    Get returns a pointer, so if you want to store into whatever that pointer is pointing to, you need to add a * (pointer dereference) at the beginning:

    *(example.Get(p)) = *yada
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 webAPI接口返回值判断
  • ¥15 自动化测试 UI Automtion
  • ¥20 关于#深度学习#的问题:2708)输出:邻接矩阵A 或者 节点索引方式:通过随机游走或者其他方式,保持节点连接类似下图(语言-python)
  • ¥15 win2012 iscsi ipsec
  • ¥15 封装的 matplotlib animation 不显示图像
  • ¥15 python摄像头画面无法显示
  • ¥15 关于#3d#的问题:d标定算法(语言-python)
  • ¥15 cve,cnnvd漏洞扫描工具推荐
  • ¥15 图像超分real-esrgan网络自己训练模型遇到问题
  • ¥15 如何构建全国统一的物流管理平台?