Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membuang data pendua dalam golang

Bagaimana untuk membuang data pendua dalam golang

PHPz
PHPzasal
2023-03-31 10:26:152561semak imbas

Apabila melakukan pemprosesan data atau logik perniagaan, selalunya perlu menyahduplikasi data untuk memastikan ketepatan dan kesempurnaan data. Terdapat banyak cara untuk mengalih keluar data pendua di Golang Berikut adalah beberapa kaedah biasa.

Gunakan peta

Menggunakan peta ialah salah satu cara paling biasa untuk mengalih keluar data pendua di Golang. Peta ialah struktur data pasangan nilai kunci tidak tertib yang boleh menyemak dengan cepat sama ada nilai wujud dalam peta. Anda boleh menentukan peta untuk menyimpan data yang perlu dinyahduplikasi, kemudian melintasi kepingan dan menggunakan setiap elemen dalam kepingan sebagai kunci dalam peta, supaya anda boleh menyahgandakan:

func RemoveDuplicate(slc []string) []string {
    m := make(map[string]bool)
    for _, v := range slc {
        if _, ok := m[v]; !ok {
            m[v] = true
        }
    }
    var result []string
    for k := range m {
        result = append(result, k)
    }
    return result
}

Dalam kod di atas, pertama A peta m ditakrifkan untuk menyimpan data pendua. Kemudian lelaran ke atas hirisan, dalam setiap gelung ambil elemen semasa sebagai kunci dalam peta, jika kunci itu tidak wujud dalam peta, tambahkannya pada peta dan tetapkan nilainya kepada benar. Akhir sekali, lelaran ke atas semua kekunci dalam peta, menambahkannya pada kepingan hasil, dan akhirnya mengembalikan kepingan hasil.

Apabila menggunakan peta untuk mengalih keluar pendua, anda perlu memberi perhatian kepada perkara berikut:

  • Data tidak menyimpan pesanan, anda boleh gunakan kaedah lain.
  • Jika anda perlu menyimpan data tambahan dalam peta, anda perlu menggunakan nilai peta sebagai struktur dan menyimpan data tambahan dalam struktur.
  • Jika anda perlu menyimpan jenis data yang kompleks, seperti struktur, dsb. dalam peta, anda perlu melaksanakan kaedah Equal jenis dan menggunakan kaedah ini dalam peta untuk perbandingan.

Menggunakan Slices

Slices juga merupakan salah satu struktur data yang biasa digunakan di Golang. Kepingan boleh menambah elemen baharu melalui kaedah tambah, dan boleh diisih menggunakan algoritma pengisihan, supaya ia boleh digunakan untuk operasi penyahduplikasian.

func RemoveDuplicate(slc []string) []string {
    var result []string
    for i := range slc {
        found := false
        for j := range result {
            if slc[i] == result[j] {
                found = true
                break
            }
        }
        if !found {
            result = append(result, slc[i])
        }
    }
    return result
}

Dalam kod di atas, hasil hirisan kosong mula-mula ditakrifkan untuk menyimpan data nyahduplikasi. Kemudian lelaran ke atas kepingan asal, dan untuk setiap elemen, lelaran ke atas kepingan hasil dan semak sama ada elemen itu wujud dalam hasil. Jika ia tidak wujud, elemen itu ditambah kepada hasil. Jika ia wujud, teruskan melintasi elemen seterusnya.

Menggunakan Koleksi

Di Golang, anda juga boleh menggunakan jenis koleksi untuk mengalih keluar data pendua. Set ialah struktur data tidak tertib dan tidak berulang yang boleh dibandingkan dan dicari menggunakan elemen dalam set, jadi ia boleh digunakan untuk operasi penduaan. Tiada jenis koleksi langsung di Golang, tetapi ia boleh dilaksanakan menggunakan perpustakaan pihak ketiga seperti pakej setdata atau menggunakan peta/peta Go.

func RemoveDuplicate(slc []string) []string {
    set := make(map[string]struct{})
    result := make([]string, 0)
    for _, v := range slc {
        if _, ok := set[v]; !ok {
            set[v] = struct{}{}
            result = append(result, v)
        }
    }
    return result
}

Dalam kod di atas, set peta kosong dan hasil hirisan kosong terlebih dahulu ditakrifkan untuk menyimpan data pendua. Kemudian lelaran ke atas kepingan asal, dan untuk setiap elemen, semak sama ada elemen itu wujud dalam set, jika tidak, tambahkannya pada set dan tambahkan elemen pada kepingan hasil. Jika ia wujud, teruskan melintasi elemen seterusnya.

Di atas adalah beberapa kaedah biasa untuk mengalih keluar data pendua di Golang. Pilih kaedah yang sesuai untuk pelaksanaan mengikut keperluan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk membuang data pendua dalam golang. 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