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 サイトの他の関連記事を参照してください。