我想将我认为的分组全局与嵌入式锁结合起来,如下所示:
var stats struct {
sync.RWMutex
m map[string]statsEntry
}
不幸的是 map 要有用,它必须被制作,所以代码变成:
var stats = struct {
sync.RWMutex
m map[string]statsEntry
}
{
???,
make(map[string]statsEntry),
}
用什么代替 ???
?
最佳答案
你使用类型文字:
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)}
关于go - 如何不初始化结构的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37423058/