Go の struct{} と struct{}{} の性質を詳しく調べる
Go は、構造体の概念を活用して、次のシーケンスを定義します。名前付き要素。 struct{} と struct{}{} は似ているように見えますが、微妙な違いがあります。
struct{}: ゼロサイズの空の構造体
A struct{ } は要素が定義されていない構造体を表します。これは主にデータを保持しないために存在します。サイズが小さいため、追加のスペースを必要とせずにメモリを効率的に利用できます。
struct{}: 空の構造体用の複合リテラル
対照的に、struct{}{} 構造体はstruct{} 型の値。その構文は、フィールドが存在しないため、構造体型の後に空の中括弧が続くのが特徴です。
実際の struct{} の活用: セットの作成
Go には本質的にセット データがありません。構造はありますが、地図は実行可能な代替手段を提供します。マップの値の型を struct{} として定義することで、キーのみを格納するセットの類似物を作成します。この手法により、マップ内のキーの一意性が維持されます。
例:
var set map[string]struct{} set = make(map[string]struct{}) set["red"] = struct{}{} set["blue"] = struct{}{} _, ok := set["red"] fmt.Println("Is red in the map?", ok)
マップ機能は、セットの動作を模倣して、キーの有無を表示します。
以上がGo の「struct{}」と「struct{}{}」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。