老师好,我感觉值接收者,全部可以使用指针接收的方式来替代
来源:4-1 结构体和方法

PeterSix3244453
2018-03-20
值接收者又有传参复制的问题,不明白为什么Go语言要这么设计呢?是有什么场景下是必须要使用值接收吗?感觉全部可以使用指针接收的方式来替代
写回答
1回答
-
ccmouse
2018-03-23
值接收者是go语言特有的。
的确可以去掉值接收者,但除了一点,如何规定一个对象,或者一个方法,他是不可变的,也就是不会改变接受者的状态。
这个在c++中,使用const关键字,在java中,使用final关键字。但是,熟悉c++或是java的同学应该有所体会,这两个关键字到底如何起作用很难理清楚。
那么既然go语言把接收者放在一个普通函数参数的地位上(后面我们还会看到函数作为接收者)那么就没有理由禁用值接收者,顺便,又解决了不可变对象/方法的问题。10
相似问题