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

Go Structs : quelle est la différence entre `struct{}` et `struct{}{} ?`

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-08 16:05:12660parcourir

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

structs dans Go : struct{} et struct{}{} démystifiés

Dans Go, struct est une construction puissante utilisée pour définir des données genres. Cependant, il existe deux cas particuliers de structures qui méritent d'être examinées : struct{} et struct{}.

struct{} : la structure à élément zéro

struct{} est un type struct sans éléments nommés. Il sert à plusieurs fins utiles :

  • Taille nulle : Une valeur struct{} n'occupe aucune mémoire, ce qui la rend particulièrement utile pour les scénarios économes en espace.

Utilisation :

var emptyStruct struct{}

struct{} : composite vide Literal

struct{}{} est un littéral composite qui construit une valeur de structure vide. Les littéraux composites permettent d'initialiser de manière concise les valeurs de types spécifiques. Pour struct{}, la syntaxe est simple :

var emptyStructValue = struct{}{}

Utilisation dans une implémentation d'ensemble

Une application pratique de la structure vide consiste à créer des données de type ensemble structure à l’aide d’une carte Go. Puisqu'une carte n'autorise que des clés uniques, nous pouvons utiliser struct{} comme type de valeur pour créer un ensemble d'éléments uniques sans stocker aucune valeur :

type Set map[string]struct{}

func main() {
    set := make(Set)
    set["foo"] = struct{}{}
    set["bar"] = struct{}{}

    _, ok := set["foo"]
    println("Is \"foo\" in the set?", ok)
}

Conclusion

struct{} et struct{}{} offrent des fonctionnalités uniques qui étendent l'utilité du système struct de Go. La structure à élément zéro offre une efficacité de mémoire, tandis que le littéral composite vide aide à créer des valeurs de structure vides ou à construire des structures de données de type ensemble.

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