我来自一些没有显式指针的语言,所以我不太理解它们存在的意义(不是故意的双关语)。
问题在于,大多数时候我不知道为什么要将指针传递给函数。我确实明白当你传递一个指针时,对变量的修改会在任何地方都生效,但这有什么意义呢?为什么不直接修改值并返回结果呢?
例如,http.HandlerFunc
是一个接收 http.ResponseWriter
和 *http.Request
作为参数的函数。我已经读到接口实际上是指针(这是正确的吗?),但我不明白的是,为什么?
我为什么要得到一个 writer 指针?我只是写入它,而不是修改它。还有,为什么我要得到一个 request 指针?我会使用像 request.FormValue()
这样的方法。
通过这些例子,我试图确定的问题是,“什么时候需要传递指针?”
我现在的做法是编写代码,尝试编译它,修复说必须传递指针的错误,通过添加一个&和星号,直到错误消失。然而,我感觉这个半理解的指针概念很快会让我吃亏。