"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 > Comment vérifier efficacement l'existence d'éléments en tranches go

Comment vérifier efficacement l'existence d'éléments en tranches go

Publié le 2025-04-21
Parcourir:196

How to Efficiently Check for Element Presence in Go Slices?

Vérification de la présence de l'élément dans go Slices

Dans Go, une tranche n'inclut pas nativement une méthode comme Slice.contains (objet) pour déterminer la présence d'un élément. Au lieu de cela, une solution courante consiste à parcourir chaque élément pour effectuer la recherche.

Approches alternatives:

Méthode personnalisée:

Création d'une méthode Slice.Contitains (). Importer "FMT" func main () { Slice: = [] int {1, 2, 3} Si sliceContains (tranche, 2) { fmt.println ("contient") } autre { fmt.println ("ne contient pas") } } func sliceContains (tranche [] int, objet int) bool { pour _, v: = range tranche { Si v == objet { Retour vrai } } retourner faux }

package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    if sliceContains(slice, 2) {
        fmt.Println("Contains")
    } else {
        fmt.Println("Not contains")
    }
}

func sliceContains(slice []int, object int) bool {
    for _, v := range slice {
        if v == object {
            return true
        }
    }
    return false
}
Recherche binaire:

comme suggéré par MKB, en utilisant l'algorithme de recherche binaire du package de tri offre une approche plus efficace pour les grandes tranches. importer ( "FMT" "trier" ) func main () { Slice: = [] int {1, 2, 3} tri.ints (tranche) Index: = Sort.Searchints (Slice, 2) Si index! = len (tranche) { fmt.println ("contient") } autre { fmt.println ("ne contient pas") } }

Utilisation d'une carte:
package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    if sliceContains(slice, 2) {
        fmt.Println("Contains")
    } else {
        fmt.Println("Not contains")
    }
}

func sliceContains(slice []int, object int) bool {
    for _, v := range slice {
        if v == object {
            return true
        }
    }
    return false
}

Si de nombreuses vérifications d'existence sont anticipées, en utilisant une carte comme alternative à une tranche fournit une solution plus efficace. importer ( "FMT" "sync" ) func main () { Slice: = [] int {1, 2, 3} M: = Make (map [int] struct {}, len (tranche)) pour _, v: = range tranche { m [v] = struct {} {} } Si _, existe: = m [2]; existe { fmt.println ("contient") } autre { fmt.println ("ne contient pas") } } Dans ce scénario, une carte [String] struct {} est fréquemment utilisée pour les ensembles en raison de son type de carte interne optimisé pour de telles valeurs.

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