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

Bagaimana untuk Mencari Elemen Unik dalam Go Slice atau Array?

Susan Sarandon
Lepaskan: 2024-11-02 11:02:30
asal
445 orang telah melayarinya

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

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

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

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!

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