"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi Golang n'a-t-il pas une structure de données d'ensemble native ?

Pourquoi Golang n'a-t-il pas une structure de données d'ensemble native ?

Publié le 2024-11-15
Parcourir:778

Why Doesn't Golang Have a Native Set Data Structure?

Le curieux manque de structure de données d'ensemble de Golang

Dans Golang, le besoin fondamental d'une structure de données d'ensemble a conduit à la question déroutante : pourquoi n'en existe-t-il pas un fourni nativement ? S'inspirant de l'influente bibliothèque Guava de Google, pourquoi les concepteurs de Golang ont-ils omis de prendre en charge une structure aussi fondamentale, obligeant les développeurs à créer leurs propres implémentations ?

La réponse réside dans la simplicité de construction d'ensembles à l'aide de cartes. Comme le démontre l'extrait de code fourni, les cartes peuvent être exploitées pour créer des ensembles. Les opérations clés telles que la vérification de l'existence, l'ajout, la suppression et l'exécution d'opérations d'ensemble (union, intersection) peuvent être mises en œuvre facilement.

s := map[int]bool{5: true, 2: true}
_, ok := s[6] // check for existence
s[8] = true // add element 
delete(s, 2) // remove element

// Union
s_union := map[int]bool{}
for k, _ := range s1{
    s_union[k] = true
}
for k, _ := range s2{
    s_union[k] = true
}

// Intersection
s_intersection := map[int]bool{}
if len(s1) > len(s2) {
  s1, s2 = s2, s1 // better to iterate over a shorter set
}
for k,_ := range s1 { 
  if s2[k] {
    s_intersection[k] = true
  }
}

Bien que ces implémentations basées sur des cartes soient suffisantes pour la plupart des scénarios pratiques, certains peuvent affirmer qu'une implémentation d'ensemble natif simplifierait et améliorerait la lisibilité du code. Néanmoins, pour les développeurs Golang, comprendre l'utilisation des cartes en tant qu'ensembles est crucial à la fois pour la résolution de problèmes et pour une utilisation efficace des ressources.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3