我是 Go 语言的新手,并且只有很少的 C/C++ 背景,所以我很自然地在思考何时使用指针和何时不使用指针的想法。尽管这个问题可能被认为是开放式的,但我想知道关于何时返回结构和何时返回指针的一些指导原则(以及何时接受结构/指针作为参数)。据我所知,以下陈述是正确的:结构按值传递给函数。也就是说,在将结构传递给函数时,会对其进行复制。如果我想通过引用传递结构,那么我会在函数定义中使用指针参数,并在调用函数时使用 addressof 运算符。我想通过引用传递结构的原因是因为我传递的结构很大,并且按值传递它会占用内存(不太可能)或者如果我想对复制我传入的(更有可能)。作为 3.) 的推论,我应该通过值传递,除非我有上述原因之一通过引用传递。我的假设正确吗?还是我错过了指针上的标记?
1 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
你的假设是正确的。关于 #3,Go 是并发语言,在 goroutine 中通过引用传递使它们都读取相同的结构,这是安全的,但也会使它们修改相同的结构,这是危险的。
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消