Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memeriksa Kehadiran Elemen dengan Cekap dalam 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!