ホームページ > バックエンド開発 > Golang > Go 構造体を初期化するときに括弧が必要になるのはどのような場合ですか?

Go 構造体を初期化するときに括弧が必要になるのはどのような場合ですか?

DDD
リリース: 2024-11-03 00:06:02
オリジナル
1024 人が閲覧しました

When do you need parentheses when initializing Go structs?

括弧を使用した Go 構造体の初期化

Go で構造体を初期化する場合、括弧を使用する必要はありませんが、特定の状況では括弧を使用することをお勧めします。

通常、

<code class="go">item1 := Item{1, "Foo"}</code>
ログイン後にコピー

に示すように、構造体は中かっこを使用して初期化されます。

<code class="go">item2 := (Item{2, "Bar"})</code>
ログイン後にコピー

どちらの行も、Item 構造体のインスタンスを作成し、それらをそれぞれ item1 と item2 に割り当てます。両方の構造体のリフレクションは同じ名前を返します。

括弧は主に、if ステートメント内で構造体の初期化を使用するときに構文の曖昧さを解消するために役立ちます。括弧がないと、次のコードはコンパイル エラーになります:

<code class="go">if i := Item{3, "a"}; i.Id == 3 {
}</code>
ログイン後にコピー

コンパイラは、左中括弧が複合リテラルに属しているか if ステートメント本体に属しているかを判断できません。かっこを追加すると、このあいまいさが解決されます。

<code class="go">if i := (Item{3, "a"}); i.Id == 3 {
}</code>
ログイン後にコピー

この場合、かっこは、複合リテラルが i に割り当てられる値であることを明示的に示します。詳細については、「for ループ初期化子の構造体」ページを参照してください。

以上がGo 構造体を初期化するときに括弧が必要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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