老师好,我感觉值接收者,全部可以使用指针接收的方式来替代

来源:4-1 结构体和方法

PeterSix3244453

2018-03-20

值接收者又有传参复制的问题,不明白为什么Go语言要这么设计呢?是有什么场景下是必须要使用值接收吗?感觉全部可以使用指针接收的方式来替代

写回答

1回答

ccmouse

2018-03-23

值接收者是go语言特有的。
的确可以去掉值接收者,但除了一点,如何规定一个对象,或者一个方法,他是不可变的,也就是不会改变接受者的状态。
这个在c++中,使用const关键字,在java中,使用final关键字。但是,熟悉c++或是java的同学应该有所体会,这两个关键字到底如何起作用很难理清楚。
那么既然go语言把接收者放在一个普通函数参数的地位上(后面我们还会看到函数作为接收者)那么就没有理由禁用值接收者,顺便,又解决了不可变对象/方法的问题。

1
0

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

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

5995 学习 · 1909 问题

查看课程