匿名構造体宣言の違いを理解する
匿名構造体は、名前を割り当てずに構造体を定義する便利な方法です。これらは主に、特定の構造体の定義が重要ではない場合、または構造体がデータの保持と受け渡しのみを目的としている場合に使用されます。次のコード スニペットは、Go で匿名構造体を宣言する 2 つの方法を示しています。
<code class="go">var Foo = map[string]struct{}{ "foo": struct{}{}, }</code>
<code class="go">var Foo = map[string]struct{}{ "foo": {}, }</code>
最初の宣言では、明示的な型が struct{}{} として指定されています。 Gogland はこれを警告として正しく識別するため、この冗長な型宣言は不要です。 Go では、コンテキストから型が推測可能な場合、複合リテラルで型を省略できます。
2 番目の宣言では、型が省略され、{} という形式になります。これは、型を明示的に指定する必要がないため、「短い表記法」と呼ばれることもあります。複合リテラルがマップ内で使用される場合、キーと値の両方の型はマップ型自体から推測できます。
したがって、宣言 Foo = map[string]struct{}{"foo": {}} は最初のものと同等ですが、Go 言語で許可されている型の省略が行われています。この短い表記法は、匿名構造体の機能を変更しません。それは単なる構文上の違いです。
以上がGo の匿名構造体の宣言が「短い表記法」とみなされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。