传指针还是传值

来源: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等值,也有人倾向于使用指针类型,因为它们比较“大”。这也是常见和可取的。

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程