关于同时从映射中读取值 - 为什么它比从对象中读取属性或多或少是线程安全的*?
*我所说的线程安全是指跨 goroutine。
var x struct{}{}
go func(){
if v, ok := x.(foo); ok {
// read from v
}
}()
go func(){
if v, ok := x.(bar); ok {
// read from v
}
}()
同时从映射或结构成员或任何值读取值始终是线程安全的。如果您与其他写入或读取操作同时执行写入操作,则必须确保互斥,否则将会出现日期竞争。