dongtaijue1578 2017-03-12 18:18
浏览 13
已采纳

复制或传递指针

I've seen recommendations to use the following in getters and setters, i.e. pass a pointer when you are setting the value in order to change the original data, but it's not required when getting the value.

In the case of a getter, without a pointer, the value is copied. My question is, isn't it inefficient to copy the object to get value out of it, could we not use a pointer as well?

type Foo struct {
     Body string
}

func (foo Foo) GetBody() interface{} {
    return foo.Body
}

func (foo * Foo) SetBody(body string) {
    foo.Body = body
}
  • 写回答

3条回答 默认 最新

  • dongyishe6689 2017-03-12 18:39
    关注

    Where did you see a recommendation to use a non-pointer receiver for getters ? I don’t think this is done in the official packages; e.g., the zip package definitely uses pointer receivers for both getters and setters.

    func (h *FileHeader) ModTime() time.Time
    func (h *FileHeader) Mode() (mode os.FileMode)
    func (h *FileHeader) SetModTime(t time.Time)
    func (h *FileHeader) SetMode(mode os.FileMode)
    

    See also :

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)