Maison >développement back-end >Golang >Quelle est la différence entre `struct{}` et `struct{}{} `dans Go ?

Quelle est la différence entre `struct{}` et `struct{}{} `dans Go ?

DDD
DDDoriginal
2024-12-11 05:28:13352parcourir

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

Plonger dans la nature de struct{} et struct{}{} dans Go

Go exploite le concept de struct pour définir des séquences de éléments nommés. Bien que struct{} et struct{}{} puissent sembler similaires, ils possèdent des distinctions subtiles.

struct{} : la structure vide de taille nulle

Une struct{ } représente une structure sans éléments définis. Il existe principalement pour ne contenir aucune donnée. Sa petite taille permet une utilisation efficace de la mémoire sans nécessiter d'espace supplémentaire.

struct{} : un littéral composite pour la structure vide

En revanche, les constructions struct{}{} une valeur de type struct{}. Sa syntaxe présente le type struct suivi d'accolades vides, car aucun champ n'existe.

Exploiter struct{} en pratique : créer un ensemble

Go manque intrinsèquement de données d'ensemble structure, mais les cartes offrent une alternative viable. En définissant le type de valeur d'une carte comme struct{}, nous créons un ensemble analogique qui stocke uniquement les clés. Cette technique maintient l'unicité des clés dans la carte.

Par exemple :

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)

La fonctionnalité de la carte montre la présence ou l'absence de clés, imitant le comportement défini.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn