请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

回过头来复习结构体OOP之后的疑问

老师好,我现在回来复习您讲的这些基础知识,网上的示例里面既有通过内嵌结构体实现继承的案例,也有通过将结构体作为另一个结构体的变量的案例,请问这两种一般各用于什么场景呢?
比如基于map[string]any,封装一个SafeMap的结构体:

type struct SafeMap struct{
	data map[string]any
	lock sync.RWLock
}

这个时候我看到人家的示例代码里面封装它的put,get方法的时候,会放入加读写锁在里面,比如

func (sm *SafeMap) put (k string, v any) {
	sm.lock.Lock()
	defer sm.lock.UnLock()
	//TODO
}

我觉得是不是直接内嵌LOCK的形式更简洁一些,这样完全就可以这样来写了:

func (sm *SafeMap) put (k string, v any) {
	sm.Lock()
	defer sm.UnLock()
	//TODO
}

请问一下老师,一般这两种主要应用场景是分别在哪呢?

正在回答

1回答

内嵌匿名结构体和 显示的方式集成几乎没有区别,其中一个只是匿名了而已, 匿名组合的好处是前一个结构体的方法我们可以直接当做本结构体的方法一样调用,如果都能满足要求的场景下首选使用匿名结构体吧

0 回复 有任何疑惑可以回复我~
  • 提问者 邱晨100 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2022-08-22 18:14:35
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号