Maison > Article > développement back-end > Comment trouver des éléments uniques dans une tranche ou un tableau Go ?
Recherche d'éléments uniques dans une tranche ou un tableau Go
Lors du traitement des données dans Go, il peut être nécessaire d'extraire uniquement les éléments uniques à partir d’une tranche ou d’un tableau. Bien que Python fournisse des constructions pratiques telles que des ensembles à cet effet, Go n'offre pas nativement de fonctionnalités intégrées similaires.
Considérez l'exemple de code fourni dans la question, où l'intention est de trouver les coordonnées uniques dans une liste. contenant des doublons. Le code tente d'y parvenir en parcourant à la fois la liste originale (visitée) et la liste unique initialement vide, en comparant chaque élément visité à tous les éléments uniques en utilisant la réflexion.
Analyse du code et erreurs
Cependant, le code contient plusieurs problèmes :
Solution améliorée
Une solution simplifiée et plus efficace qui suit la logique souhaitée est présentée ci-dessous :
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit for _, v := range visited { skip := false for _, u := range unique { if v == u { skip = true break } } if !skip { unique = append(unique, v) } } fmt.Println(unique)</code>
Solution alternative utilisant la carte
Alternativement, on peut exploiter la carte de Go[visiter] bool pour créer une structure de type ensemble et extraire les éléments uniques comme suit :
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } unique := map[visit]bool{} for _, v := range visited { unique[v] = true } fmt.Println(unique)</code>
Les clés de la carte représentent les éléments uniques. Pour obtenir une tranche de valeurs de visite uniques, une étape supplémentaire est nécessaire :
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit m := map[visit]bool{} for _, v := range visited { if !m[v] { m[v] = true unique = append(unique, v) } } fmt.Println(unique)</code>
Ces solutions trouvent efficacement les éléments uniques dans une tranche ou un tableau Go, en adhérant à l'énoncé du problème et en fournissant des alternatives efficaces une fois construites. dans l'ensemble, la fonctionnalité fait défaut.
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!