我想将我认为所谓的分组全局与嵌入式锁结合起来,如下所示:
var stats struct {
sync.RWMutex
m map[string]statsEntry
}
不幸的是,为了使地图有用,必须进行,所以代码变为:
var stats = struct {
sync.RWMutex
m map[string]statsEntry
}
{
???,
make(map[string]statsEntry),
}
放什么而不是???
?
答案 0 :(得分:6)
您使用类型文字:
stats := struct {
sync.RWMutex
m map[string]statsEntry
}{
sync.RWMutex{},
make(map[string]statsEntry),
}
但由于sync.RWMutex
的零值有效,您可以跳过它并指定您指定的字段
stats := struct {
sync.RWMutex
m map[string]statsEntry
}{
m: make(map[string]statsEntry),
}
但是在本地定义类型通常更清楚
type s struct {
sync.RWMutex
m map[string]statsEntry
}
stats = s{m: make(map[string]statsEntry)}