回答

收藏

何时使用指针

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-11

我是 Go 语言新手,只有很少 C/C   背景,所以我自然在思考什么时候用指针,什么时候不用指针。虽然这个问题可能被认为是开放的,但我想知道一些关于何时返回结构和何时返回指针的指导原则(以及何时接受结构/指针作为参数)。% Q- i1 y* p1 R8 I  v$ V; X. l2 i
据我所知,以下陈述是正确的:  ?- h$ Q$ f/ ^2 v
[ol]结构按值传递给函数。也就是说,当结构传递给函数时,它会被复制。) [" F5 v- o: {1 J
如果我想引用传输结构,我将在函数定义中使用指针参数,并在调用函数时使用 addressof 运算符。* y; {) S2 h; _5 Y
我认为引用传输结构的原因是我传输的结构大,按值传输会占用内存(不太可能),或者如果我想复制我传输的(更有可能)。
  |4 ~% G' q% o7 I# {作为 3.) 推论,除非我有上述原因之一,否则我应该通过值传递。[/ol]我的假设正确吗?还是错过了指针上的标记?
* {5 m8 t2 K* S  w3 a                                                                / R( l. g' D2 x' ~
    解决方案:                                                               
' b$ E; u/ U1 L/ x5 }; U  |                                                                你的假设是正确的。#3,Go 是并发语言,在 goroutine 通过引用传输读取相同的结构是安全的,但也可以修改相同的结构,这是危险的。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则