ホームページ >バックエンド開発 >Golang >Go 構造体でマップフィールドを適切に初期化するにはどうすればよいですか?

Go 構造体でマップフィールドを適切に初期化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-02 16:47:11502ブラウズ

How to Properly Initialize Map Fields in Go Structs?

Go でマップを使用した構造体フィールドの初期化

マップ フィールドを含む構造体を初期化するときは、マップがnil ポインターエラーを避けるために初期化されます。 1 つの方法は、次のようなマップを明示的に初期化するコンストラクター関数を作成することです:

type Graph struct {
  connections map[Vertex][]Vertex
} 

func NewGraph() *Graph {
    var g Graph
    g.connections = make(map[Vertex][]Vertex)
    return &g
}

もう 1 つのオプションは、マップが空の場合に初期化する「接続の追加」メソッドを使用することです:

func (g *Graph) add_connection(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)
}

その明瞭さと使いやすさからコンストラクターの使用を好む人もいますが、その柔軟性と潜在的なパフォーマンス上の利点から「接続の追加」メソッドを好む人もいます。最終的に、最適なアプローチはアプリケーションの特定の要件によって異なります。

以上がGo 構造体でマップフィールドを適切に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。