Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencari Elemen Unik dalam Go Slice atau Array?

Bagaimana untuk Mencari Elemen Unik dalam Go Slice atau Array?

Susan Sarandon
Susan Sarandonasal
2024-11-02 11:02:30356semak imbas

How to Find Unique Elements in a Go Slice or Array?

Mencari Item Unik dalam Go Slice atau Array

Apabila berurusan dengan data dalam Go, anda mungkin perlu mengekstrak elemen unik sahaja daripada kepingan atau tatasusunan. Walaupun Python menyediakan binaan yang mudah seperti set untuk tujuan ini, Go tidak menawarkan kefungsian terbina dalam yang serupa secara asli.

Pertimbangkan kod sampel yang disediakan dalam soalan, yang bertujuan untuk mencari koordinat unik daripada senarai mengandungi pendua. Kod cuba untuk mencapai ini dengan mengulangi kedua-dua senarai asal (dilawati) dan senarai unik yang pada mulanya kosong, membandingkan setiap elemen yang dilawati kepada semua elemen yang unik menggunakan refleksi.

Analisis Kod dan Ralat

Walau bagaimanapun, kod tersebut mengandungi beberapa isu:

  • Menggunakan pantulan (reflect.DeepEqual()) untuk perbandingan elemen adalah tidak perlu dan memperkenalkan lapisan kerumitan tambahan.
  • Gelung dalam menambahkan elemen secara membuta tuli tanpa mengambil kira sama ada ia sudah wujud secara unik, menghasilkan berbilang penambahan elemen yang sama.

Penyelesaian yang Diperbaiki

Penyelesaian yang dipermudahkan dan lebih cekap yang mengikut logik yang dikehendaki dibentangkan di bawah:

<code class="go">visited := []visit{
    visit{1, 100},
    visit{2, 2},
    visit{1, 100},
    visit{1, 1},
}
var unique []visit

for _, v := range visited {
    skip := false
    for _, u := range unique {
        if v == u {
            skip = true
            break
        }
    }
    if !skip {
        unique = append(unique, v)
    }
}

fmt.Println(unique)</code>

Penyelesaian Alternatif Menggunakan Peta

Sebagai alternatif, seseorang boleh memanfaatkan peta Go[lawati] bool untuk mencipta struktur seperti set dan mengekstrak elemen unik seperti berikut:

<code class="go">visited := []visit{
    visit{1, 100},
    visit{2, 2},
    visit{1, 100},
    visit{1, 1},
}
unique := map[visit]bool{}

for _, v := range visited {
    unique[v] = true
}

fmt.Println(unique)</code>

Kunci peta mewakili elemen unik. Untuk mendapatkan sepotong nilai lawatan unik, langkah tambahan diperlukan:

<code class="go">visited := []visit{
    visit{1, 100},
    visit{2, 2},
    visit{1, 100},
    visit{1, 1},
}
var unique []visit

m := map[visit]bool{}

for _, v := range visited {
    if !m[v] {
        m[v] = true
        unique = append(unique, v)
    }
}

fmt.Println(unique)</code>

Penyelesaian ini mencari elemen unik dalam kepingan atau tatasusunan Go, mematuhi pernyataan masalah dan menyediakan alternatif yang cekap apabila dibina- dalam fungsi set kurang.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Elemen Unik dalam Go Slice atau Array?. 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