2016-05-24 17 views
2

構造体の一部を初期化しない方法埋め込まれたロックこのようなでグローバルグループ化:残念ながら私はと呼ばれるものだと思い組み合わせたい

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

マップが有用であるため、それをコードは次のようになります。

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

???の代わりに何を入力しますか?

答えて

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)} 
+0

私は常にグローバル変数のタイプ名を見つけるのに苦労しているe [私が読んだ](https://groups.google.com/forum/#!topic/golang-nuts/zD8tRKAmoJE)あなたはそれらを 'var something somethingType'と名付けるべきではありません。 – AndreKR

関連する問題