ホームページ >バックエンド開発 >Golang >従来のコンストラクターを使用せずに Go で構造体を初期化するにはどうすればよいですか?

従来のコンストラクターを使用せずに Go で構造体を初期化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-17 18:37:14530ブラウズ

How Can I Initialize Structs in Go Without Traditional Constructors?

Go のコンストラクター: 適切なデフォルト値を確保するための代替手段

伝統的に、コンストラクターはオブジェクト指向プログラミング言語でオブジェクトを初期化するために使用されます。ただし、オブジェクト指向設計に異なるアプローチを採用する Go には、従来の意味でのコンストラクターがありません。

構造体に適切なデフォルト値を設定する必要性に対処するために、Go はいくつかの代替手段を提供します。オプションの 1 つは、パッケージ レベルで実行される init メソッドです。ただし、このアプローチは個々の構造体の初期化には適していません。

より一般的な方法は、必要なパラメーターを受け取り、初期化された構造体へのポインターを返す NewThing 関数を作成することです。この機能を使用すると、他のフィールドにデフォルト値を割り当てながら、特定の値を設定できます。例:

type Thing struct {
    Name  string
    Num   int
}

func NewThing(name string) *Thing {
    p := new(Thing)
    p.Name = name
    p.Num = 33 // Default value
    return p
}

この関数の要約バージョンは次のようになります:

func NewThing(name string) *Thing {
    return &Thing{name, 33}
}

ポインターを返すことが望ましくない場合、別のオプションは、値を直接返す makeThing 関数を作成することです。 :

func makeThing(name string) Thing {
    return Thing{name, 33}
}

このアプローチは、比較的単純でポインターを必要としない構造体に適しています。 new キーワードは Go でメモリを割り当てるため、ポインタを操作するときはメモリ管理の実践を考慮することが重要であることに注意してください。

以上が従来のコンストラクターを使用せずに Go で構造体を初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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