"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como verificar com eficiência a existência de elementos nas fatias Go

Como verificar com eficiência a existência de elementos nas fatias Go

Postado em 2025-04-21
Navegar:724

How to Efficiently Check for Element Presence in Go Slices?

verifica a presença do elemento em go slies

em go, uma fatia não inclui nativamente um método como slice.contains (objeto) para determinar a presença de um elemento. Em vez disso, uma solução comum é iterar através de cada elemento para conduzir a pesquisa. importar "fmt" func main () { Slice: = [] int {1, 2, 3} Se SliceContains (Slice, 2) { fmt.println ("contém") } outro { fmt.println ("não contém") } } func sliceContains (slice [] int, objeto int) bool { para _, v: = fatia de gama { se v == objeto { retornar verdadeiro } } retornar falso }

pesquisa binária:

Como sugerido por MKB, utilizando o algoritmo de pesquisa binária do pacote de classificação oferece uma abordagem mais eficiente para slies grandes. importação ( "FMT" "organizar" ) func main () { Slice: = [] int {1, 2, 3} Sort.ints (fatia) ÍNDICE: = Sort.SearchInts (Slice, 2) se index! = len (slice) { fmt.println ("contém") } outro { fmt.println ("não contém") } }

usando um map:
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
}

se inúmeras verificações de existência forem antecipadas, usando um mapa como uma alternativa a uma fatia fornece uma solução mais eficiente. pacote principal principal importação ( "FMT" "Sync" ) func main () { Slice: = [] int {1, 2, 3} m: = make (map [int] struct {}, len (slice)) para _, v: = fatia de gama { m [v] = struct {} {} } Se _, existe: = m [2]; existe { fmt.println ("contém") } outro { fmt.println ("não contém") } }

Neste cenário, um mapa [string] struct {} é frequentemente empregado para conjuntos devido ao seu tipo de mapa interno otimizado para esses valores.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3