小编典典

何时使用指针

go

我是 Go 语言的新手,并且只有很少的 C/C++ 背景,所以我很自然地在思考何时使用指针和何时不使用指针的想法。尽管这个问题可能被认为是开放式的,但我想知道关于何时返回结构和何时返回指针的一些指导原则(以及何时接受结构/指针作为参数)。

据我所知,以下陈述是正确的:

  1. 结构按值传递给函数。也就是说,在将结构传递给函数时,会对其进行复制。
  2. 如果我想通过引用传递结构,那么我会在函数定义中使用指针参数,并在调用函数时使用 addressof 运算符。
  3. 我想通过引用传递结构的原因是因为我传递的结构很大,并且按值传递它会占用内存(不太可能)或者如果我想对复制我传入的(更有可能)。
  4. 作为 3.) 的推论,我应该通过值传递,除非我有上述原因之一通过引用传递。

我的假设正确吗?还是我错过了指针上的标记?


阅读 173

收藏
2021-12-27

共1个答案

小编典典

你的假设是正确的。关于 #3,Go 是并发语言,在 goroutine 中通过引用传递使它们都读取相同的结构,这是安全的,但也会使它们修改相同的结构,这是危险的。

2021-12-27