ホームページ > バックエンド開発 > Golang > Go 構造体フィールドでマップを最適に初期化する方法は?

Go 構造体フィールドでマップを最適に初期化する方法は?

Susan Sarandon
リリース: 2024-12-14 07:20:39
オリジナル
623 人が閲覧しました

How to Best Initialize Maps in Go Struct Fields?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート