【发布时间】:2020-05-30 20:54:17
【问题描述】:
例如,当初始化一个指向 int 的指针时,我们使用:
var pointer *int
为什么不是语法:
var pointer &int
对我来说,第二个版本会更有意义,因为它读起来像“变量‘指针’是 int 的内存地址”
或者换一种说法,我觉得“*”既用于定义内存地址类型(如上),又用于取消引用,例如 *指针 = 123
这是否像看起来那样令人困惑,还是我在这里遗漏了什么?
【问题讨论】:
-
这是 C 的遗产。
-
也许有人会问为什么函数定义使用
func而不是def,或者为什么Go有float32和float64而不是float和double,或者任何数字的类似问题。定义它的人当时选择了那些名称、运算符拼写等,因为他们当时喜欢它们(也许现在仍然喜欢)。 -
@torek,有时了解语法背后的推理有助于理解其功能或预期目的。
-
通过您的示例,知道 float32 或 float64 指的是精度位会很有帮助
-
我已经完成了答案。
标签: pointers go reference memory-address dereference