在看同事的代码时候,发现这样的操作:
var (
object = New()
mu = sync.RWMutex
)
func SetValue(v SomeInterface) {
mu.Lock()
object = v
mu.Unlock()
}
func GetValue() SomeInterface {
mu.RLock()
defer mu.RUnlock()
return object
}
为什么要加读锁啊?!难道会 Get 到 nil ? 同事给了我这个链接: https://stackoverflow.com/questions/21447463/is-assigning-a-pointer-atomic-in-golang