ホームページ > バックエンド開発 > Golang > Go の「struct{}」と「struct{}{}」の違いは何ですか?

Go の「struct{}」と「struct{}{}」の違いは何ですか?

DDD
リリース: 2024-12-11 05:28:13
オリジナル
303 人が閲覧しました

What's the Difference Between `struct{}` and `struct{}{} `in Go?

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

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