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
Lepaskan: 2024-12-12 15:17:18
asal
514 orang telah melayarinya

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
}
Salin selepas log masuk

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")
    }
}
Salin selepas log masuk

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")
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan