Go 構造体の初期化にコンストラクターを使用できますか?
Go では、さまざまな方法で構造体を適切なデフォルト値で初期化できます。 Go の非 OOP 性質により従来のコンストラクターが欠如しているにもかかわらず、同様の機能を実現する代替手法があります。
方法 1: ポインターを返す NewThing 関数
Whenゼロ値は不適切です。1 つのオプションは、新しく初期化されたオブジェクトへのポインタを返す「NewThing」関数を作成することです。 struct:
type Thing struct { Name string Num int } func NewThing(someParameter string) *Thing { p := new(Thing) p.Name = someParameter p.Num = 33 // Set a sensible default value return p }
メソッド 2: 凝縮された "NewThing" 関数
より単純な構造体の場合、より簡潔なメソッドが利用可能です:
func NewThing(someParameter string) *Thing { return &Thing{someParameter, 33} }
方法 3: 値を含む "makeThing" 関数Return
ポインターを返したくない場合は、関数に「makeThing」という名前を付けて値を返すことができます:
func makeThing(name string) Thing { return Thing{name, 33} }
Reference
詳細については、「Effective Go」の「新規での割り当て」セクションを参照してください。
以上が従来のコンストラクターを使用せずに Go 構造体を初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。