如何不初始化结构的一部分

时间:2016-05-24 20:16:10

标签: go

我想将我认为所谓的分组全局嵌入式锁结合起来,如下所示:

var stats struct {
    sync.RWMutex
    m map[string]statsEntry
}

不幸的是,为了使地图有用,必须进行,所以代码变为:

var stats = struct {
  sync.RWMutex
  m map[string]statsEntry
}
{
  ???,
  make(map[string]statsEntry),
}

放什么而不是???

1 个答案:

答案 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)}