一尘不染

指针什么时候惯用的?

go

我来自没有显式指针的语言,因此我不太了解它们的存在重点(无双关语)。

问题是,在大多数情况下,我不知道为什么要传递指向函数的指针。我确实知道,当您传递一个指针时,到处都会对该变量进行修改,但这有什么意义呢?为什么不修改值并返回结果呢?

例如,http.HandlerFunc是一个函数,该函数接收http.ResponseWriter*http.Request作为参数。我读过接口实际上是指针(是吗?),但是我没有得到的是为什么?

为什么我要指向作家?我没有修改它,只是在写它。而且,为什么我要获得指向请求的指针?我正在做类似的事情request.FormValue()

通过这些示例,我试图确定的是以下问题的答案:“何时需要传递指针?”

现在,我的方法是编写代码,尝试对其进行编译,并通过添加与号和星号来修复必须通过指针的错误,直到错误通过。但是,我感觉这种半被理解的指针概念很快就会在后天咬我。


阅读 241

收藏
2020-07-02

共1个答案

一尘不染

您可以将指针视为指向对象的内存地址的值。与大多数数据结构相比,指针较小(例如8个字节)。

很多时候,您将获得一个指向对象的指针,因为传递这8个字节比创建要传递的整个对象的副本要快得多。

在使用Request对象的情况下,与仅传递可以访问原始数据的指针相比,在请求下创建所有内容(有效负载,标头和其他内容)的副本将非常昂贵。

2020-07-02