Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memeriksa Kehadiran Elemen dengan Cekap dalam Go Slices?

Bagaimana untuk Memeriksa Kehadiran Elemen dengan Cekap dalam Go Slices?

Barbara Streisand
Barbara Streisandasal
2024-12-12 15:17:18508semak imbas

How to Efficiently Check for Element Presence in Go Slices?

Menyemak Kehadiran Elemen dalam Go Slices

Dalam Go, hirisan tidak secara asalnya menyertakan kaedah seperti slice.contains(objek) untuk menentukan kehadiran sesuatu unsur. Sebaliknya, penyelesaian biasa adalah dengan melelakan setiap elemen untuk menjalankan carian.

Pendekatan Alternatif:

Kaedah Tersuai:

Membuat kaedah slice.contains() tersuai ialah pilihan yang mudah, seperti yang ditunjukkan oleh Mostafa.

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
}

Carian Binari:

Seperti yang dicadangkan oleh mkb, menggunakan algoritma carian binari pakej isihan menawarkan pendekatan yang lebih cekap untuk kepingan besar.

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")
    }
}

Menggunakan a Peta:

Jika banyak semakan kewujudan dijangka, menggunakan peta sebagai alternatif kepada kepingan memberikan penyelesaian yang lebih cekap.

package main

import (
    "fmt"
    "sync"
)

func main() {
    slice := []int{1, 2, 3}
    m := make(map[int]struct{}, len(slice))
    for _, v := range slice {
        m[v] = struct{}{}
    }
    if _, exists := m[2]; exists {
        fmt.Println("Contains")
    } else {
        fmt.Println("Not contains")
    }
}

Dalam senario ini, peta[rentetan ]struct{} kerap digunakan untuk set kerana jenis peta dalaman yang dioptimumkan untuk nilai tersebut.

Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Kehadiran Elemen dengan Cekap dalam Go Slices?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn