回过头来复习结构体OOP之后的疑问
来源:10-6 通过内嵌结构体实现继承的效果

邱晨100
2022-08-19
老师好,我现在回来复习您讲的这些基础知识,网上的示例里面既有通过内嵌结构体实现继承的案例,也有通过将结构体作为另一个结构体的变量的案例,请问这两种一般各用于什么场景呢?
比如基于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回答
-
内嵌匿名结构体和 显示的方式集成几乎没有区别,其中一个只是匿名了而已, 匿名组合的好处是前一个结构体的方法我们可以直接当做本结构体的方法一样调用,如果都能满足要求的场景下首选使用匿名结构体吧
012022-08-22
相似问题
关于线程和协程的一个疑问
回答 1
这套课程对之前的 drf有啥影响
回答 1
中级Python开发后续的发展问题
回答 2
关于上传文件的疑惑
回答 1
python grpc超时机制有些疑问
回答 1