Le curieux manque de structure de données définie à Golang
À Golang, le besoin fondamental d'une structure de données définie 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, certaines peuvent soutiennent 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.
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!