Because the mutex is embedded, we can directly access the Lock and Unlock methods from the i receiver.
We mentioned that such an example is a wrong usage of type embedding. What’s the reason for this? Since sync.Mutex is an embedded type, the Lock and Unlock methods will be promoted. Therefore, both methods become visible to external clients using InMem:
This promotion is probably not desired. A mutex is, in most cases, something that we want to encapsulate within a struct and make invisible to external clients. Therefore, we shouldn’t make it an embedded field in this case:
Because the mutex isn’t embedded and is unexported, it can’t be accessed from external clients.
标签:10,methods,embedded,being,clients,problems,mutex,external,type From: https://www.cnblogs.com/zhangzhihui/p/18014853