«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно проверить существование элементов в ломтиках GO

Как эффективно проверить существование элементов в ломтиках GO

Опубликовано в 2025-04-21
Просматривать:943

How to Efficiently Check for Element Presence in Go Slices?

проверка элемента присутствия в срезах GO

В Go Slice не включает в себя метод, такой как slice.contains (Object) для определения наличия элемента. Вместо этого общее решение заключается в том, чтобы итерация через каждый элемент для проведения поиска.

альтернативные подходы:

пользовательский метод:

создание пользовательского slice.contains (). Импорт "FMT" func main () { Slice: = [] int {1, 2, 3} Если SliceContains (Slice, 2) { fmt.println ("Содержит") } еще { fmt.println ("не содержит") } } func slicecontains (slice [] int, object int) bool { для _, v: = range slice { Если v == Object { вернуть правду } } вернуть ложь }

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
}
Birary Search:

, как это было предложено MKB, используя бинарный алгоритм поиска сортировки сортировки. импорт ( "FMT" "Сорт" ) func main () { Slice: = [] int {1, 2, 3} sort.ints (slice) index: = sort.searchints (slice, 2) Если index! = len (slice) { fmt.println ("Содержит") } еще { fmt.println ("не содержит") } }

]

с использованием карты:
package main

import (
    "fmt"
    "sort"
)

func main() {
    slice := []int{1, 2, 3}
    sort.Ints(slice)
    index := sort.SearchInts(slice, 2)
    if index != len(slice) {
        fmt.Println("Contains")
    } else {
        fmt.Println("Not contains")
    }
}

] Если ожидаются многочисленные проверки на существование, используя карту в качестве альтернативы среза, обеспечивает более эффективное решение. main main импорт ( "FMT" "синхронизация" ) func main () { Slice: = [] int {1, 2, 3} m: = make (map [int] struct {}, len (slice)) для _, v: = range slice { m [v] = struct {} {} } Если _, существует: = m [2]; существует { fmt.println ("Содержит") } еще { fmt.println ("не содержит") } }

В этом сценарии карта [String] struct {} часто используется для наборов из -за его оптимизированного типа внутренней карты для таких значений.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3