Go 構造体でマップを初期化するためのベスト プラクティス
マップ フィールドを含む構造体を作成する場合、コンパイラはデフォルトで nil に設定します。適切な初期化を行わずにマップにアクセスすると、ランタイム エラーが発生する可能性があります。この初期化のニーズに効果的に対処できるメソッドがいくつかあります。
Constructor Function
推奨されるアプローチの 1 つは、構造体専用のコンストラクター関数を実装することです。この関数は、構造体の作成時にマップ フィールドを初期化し、マップが nil にならないようにします。
例:
func NewGraph() *Graph { var g Graph g.connections = make(map[Vertex][]Vertex) return &g }
初期化チェックを伴うメソッド
もう 1 つのオプションは、マップに接続を追加するメソッドを構造体内に作成することです。このメソッドは、最初にマップが nil かどうかを確認し、そうである場合は、その後のアクションを実行する前にマップを初期化する必要があります。
例:
func (g *Graph) AddConnection(v1, v2 Vertex) { if g.connections == nil { g.connections = make(map[Vertex][]Vertex) } g.connections[v1] = append(g.connections[v1], v2) g.connections[v2] = append(g.connections[v2], v1) }
構造体定義での明示的なマップの初期化
特定のシナリオでは、構造体定義自体内でマップを明示的に初期化することが許容される場合があります。このアプローチは、マップが不変であるか、その値がコンパイル時にわかっている場合に役立ちます。
例:
type Graph struct { connections map[Vertex][]Vertex }
以上がGo 構造体フィールドでマップを最適に初期化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。