我来自没有明确指针的语言,所以我真的不明白它们存在的意义(没有双关语意).
问题是我大多数时候都不知道为什么我要传递指向函数的指针.我确实理解当你传入一个指针时,对变量的修改到处都是值,但有什么意义呢?为什么不修改值并返回结果?
例如,http.HandlerFunc是一个接收http.ResponseWriter和* http.Request作为参数的函数.我已经读过接口实际上是指针(是吗?),但我没有得到的是,为什么?
为什么我得到一个指向作家的指针?我不是在修改它,我只是在写它.而且,为什么我得到一个指向请求的指针?我正在做request.FormValue()之类的事情.
通过这些例子,我在这里想要确定的是问题的答案,“我什么时候需要传入指针?”
我现在这样做的方法是编写我的代码,尝试编译它,修复错误,说我必须通过添加一个&符号和星号来传递指针,直到错误通过.然而,我觉得这个半指理会的概念很快就会在某一天在背后咬我.
最佳答案 您可以将指针视为指向对象内存地址的值.与大多数数据结构相比,指针很小(比如8个字节).
很多时候你会得到一个指向对象的指针,因为传递这8个字节比创建你想传递的整个对象的副本要快得多.
在Request对象的情况下,与仅传递可访问原始数据的指针相比,在请求(有效负载,标题和诸如此类)下创建所有内容的副本将是非常昂贵的.