Go のコンストラクター: 詳細
Go では、言語の非伝統的な OOP アプローチにもかかわらず、依然として初期化の必要があります。適切なデフォルト値を持つ構造体。この記事では、Go のコンストラクターの代替メカニズムについて説明します。
デフォルトの初期化
ゼロ値は、Go 構造体のデフォルトの初期化子です。たとえば、構造体:
type Something struct { Name string Value int }
は次のようにゼロ値で初期化できます:
var s Something fmt.Println(s) // prints "{"", 0"}"
ただし、ゼロ値が常に適切なデフォルト値であるとは限りません。
代替アプローチ
1.名前付きコンストラクター関数
もう 1 つの方法は、名前付きコンストラクター関数を使用することです。これらの関数は通常、「New」で始まり、初期化された構造体へのポインターを返します。たとえば、上記の構造体の場合:
func NewSomething(name string) *Something { return &Something{name, 33} }
この関数を使用すると、特定の名前と Value の適切なデフォルト値を使用して、Something 構造体を初期化できます。
2.圧縮されたコンストラクター関数
単純な構造体の場合、コンストラクター関数の圧縮された形式を使用できます。
func NewSomething(name string) *Something { return &Something{Name: name, Value: 33} }
3.非ポインター コンストラクター関数
ポインターを返すことが望ましくない場合は、非ポインター戻り型の関数を使用できます。
func MakeSomething(name string) Something { return Something{name, 33} }
ベスト プラクティスに関する考慮事項
どのアプローチを使用するかの選択は、構造体とプロジェクトの特定の要件によって異なります。ただし、次の一般的なガイドラインが役に立ちます。
以上が従来のコンストラクターを使用せずに Go で構造体を効果的に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。