字典的clear()方法

来源:13-3 实现SyncDict(二)

慕瓜9063200

2022-07-18

请教老师一个问题,字典的clear()方法,为什么要*dict = *MakeSyncDict()这样写,而不是这样写dict = MakeSyncDict(),构造方法返回的不就是指针吗

写回答

1回答

Moody

2022-07-18

如果用dict = MakeSyncDict(),这里相当于新建了一个dict指针,原来的dict不会有任何变化。你可以试一下这个写法,Goland会提示你 ”Assignment to the method receiver propagates only to callees but not to callers “,也就是说这个赋值并没有修改原来的那个dict

*dict = *MakeSyncDict() 这个写法,是做了解引用,原来的dict指针还是原来的dict指针,只是把它指向的值修改了。具体可以看下面这个帖子:

https://stackoverflow.com/questions/38105543/reassigning-in-pointer-method-receiver

1
1
慕瓜9063200
好,多谢老师
2022-07-18
共1条回复

深入Go底层原理,重写Redis中间件实战

深入Go语言原理+Go重写Redis

474 学习 · 172 问题

查看课程