回答

收藏

何时使用指针

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

我是 Go 语言新手,只有很少 C/C   背景,所以我自然在思考什么时候用指针,什么时候不用指针。虽然这个问题可能被认为是开放的,但我想知道一些关于何时返回结构和何时返回指针的指导原则(以及何时接受结构/指针作为参数)。. e" e( P" Q1 F, G
据我所知,以下陈述是正确的:5 s! a0 {8 C1 |$ e4 T) ?- i7 Z
[ol]结构按值传递给函数。也就是说,当结构传递给函数时,它会被复制。
4 j* L" m6 p1 v* z/ g如果我想引用传输结构,我将在函数定义中使用指针参数,并在调用函数时使用 addressof 运算符。
* y# \' \. W: ]9 E我认为引用传输结构的原因是我传输的结构大,按值传输会占用内存(不太可能),或者如果我想复制我传输的(更有可能)。
8 ~' J) {, W2 m: o- [" K9 V3 p作为 3.) 推论,除非我有上述原因之一,否则我应该通过值传递。[/ol]我的假设正确吗?还是错过了指针上的标记?9 ]. Y! B! ?0 l+ Q* G
                                                               
4 `/ Y# f* ?9 u: |    解决方案:                                                                8 @) k  D7 M2 H' g& Q
                                                                你的假设是正确的。#3,Go 是并发语言,在 goroutine 通过引用传输读取相同的结构是安全的,但也可以修改相同的结构,这是危险的。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则