ホームページ >バックエンド開発 >Golang >## Go の `new(MyStruct)` と `&MyStruct{}` の違いは何ですか?

## Go の `new(MyStruct)` と `&MyStruct{}` の違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 06:54:29791ブラウズ

## What's the Difference: `new(MyStruct)` vs. `&MyStruct{}` in Go?

Go における new の役割を理解する

new は、原始言語構造での外観とは異なり、ポインターを作成することにその目的があります。 new を使用してプリミティブの値を直接指定することはできませんが、構造体のような構造化データ型にメモリを割り当てるには便利なツールになります。このようなシナリオでは、new は初期化されていないオブジェクトへのポインターを返し、後でそのプロパティを操作できるようにします。

new と &

はどちらも new(MyStruct) ) と &MyStruct{} は新しい構造体インスタンスへのポインターを生成します。その使用法はコードの意図によって異なります。 &MyStruct{} の簡潔さが好まれる場合もありますが、new(MyStruct) はヒープにメモリを割り当てる意図を明示的に示しています。

new に関するその他の考慮事項

Beyondプリミティブ型と構造体、new はスライスとマップには適用されません。代わりに、スライスには make([]float, 100) を使用する必要があります。

new の実用的なアプリケーション

Go には組み込みコンストラクターがないため、開発者は多くの場合 new をラップします。カスタム関数内で呼び出してオブジェクトを初期化およびカスタマイズします。このアプローチにより、初期化プロセスが簡素化され、プライベート フィールドを非表示にすることが可能になり、構造の進化が容易になります。さらに、オブジェクトの作成と使用を切り離すことで柔軟性を提供し、開発者が既存のコードに影響を与えることなく構造体の構造を変更できるようにします。

以上が## Go の `new(MyStruct)` と `&MyStruct{}` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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