問題:
Go 、マップ宣言の値として匿名の構造体を使用すると、Gogland で警告が発生し、「そのようなコンテキストにおける struct{}{} 宣言と {} 宣言の違いは何ですか?
」という質問が表示されます。
これら 2 つの構文の背後にあるセマンティクスを理解することが重要です。
通常、複合リテラルには明示的な型宣言が必要です (例: []int{1, 2, 3})。ただし、マップを操作する場合、コンパイラはマップ タイプ自体からキーと値のタイプを推測できます。これにより、複合リテラル構文を簡素化し、適切な型の値が提供される場合に型宣言を省略できます。
Go 仕様によると、次のような場合、複合リテラルの型がマップで予期される型と一致する場合、型宣言は省略できます。この動作は当初は見落としでしたが、Go 1.5 では有効な機能になりました。
注: 他の型の複合リテラル (配列、スライスなど) を初期化する場合、型宣言を省略することはできません。
以上がGo マップの匿名構造体: 「struct{}{}」と「{}」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。