传指针还是传值
来源:15-5 Engine 与 Parser

qq_蒙牛_0
2020-07-13
老师,我在定义方法的时候总是纠结于传指针还是传值,尤其是对于自定义的struct,在这方面你是怎么做选择的,能说一下吗,谢谢
写回答
1回答
-
ccmouse
2020-07-20
其实我的这个项目中,有不少比较“大”的结构,我也会用传值。
通常,不管什么语言,我们在概念上都有"值类型"和"引用类型"的说法。
"值类型"就是像int, string这样的值,不过可能复杂点,是一个有好几个字段的“值”,比如“点”,有x,y,“个人信息”,有年龄,性别等。值类型是不可变的。所以我这里的ParseResult, Request, Item等,都使用了值传递。
"引用类型"通常是一个用来干活的子系统,有可能有内部状态,是可变的,Go语言中可以通过指针传递来实现。比如XXXService, XXXStorage等,我这里的Scheduler, Engine, Parser都采用了指针传递。
不过对于我这里的ParseResult, Request, Item等值,也有人倾向于使用指针类型,因为它们比较“大”。这也是常见和可取的。
00
相似问题