字典的clear()方法
来源:13-3 实现SyncDict(二)

慕瓜9063200
2022-07-18
请教老师一个问题,字典的clear()方法,为什么要*dict = *MakeSyncDict()这样写,而不是这样写dict = MakeSyncDict(),构造方法返回的不就是指针吗
写回答
1回答
-
如果用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
112022-07-18
相似问题