Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengekalkan Susunan Rentetan Unik dalam Go dengan Cekap?

Bagaimana untuk Mengekalkan Susunan Rentetan Unik dalam Go dengan Cekap?

Mary-Kate Olsen
Lepaskan: 2024-12-19 06:41:20
asal
256 orang telah melayarinya

How to Efficiently Maintain an Array of Unique Strings in Go?

Mengekalkan Rentetan Unik dalam Tatasusunan

Dalam kod yang disediakan, anda bertujuan untuk mencipta tatasusunan rentetan unik. Walau bagaimanapun, tatasusunan Go memerlukan elemen unik, menjadikannya mencabar untuk menguatkuasakan keunikan dengan rentetan yang ditambah secara dinamik. Ini menimbulkan persoalan tentang cara mencipta struktur data yang membenarkan nilai rentetan yang unik.

Menggunakan Peta sebagai Set

Memandangkan Go tidak mempunyai jenis data set asli, a peta boleh digunakan dengan berkesan untuk memenuhi tujuan ini. Keunikan utama Maps menyediakan asas untuk koleksi rentetan unik kami.

Pilihan 1: Peta dengan Nilai Boolean

Peta bukan kosong (benar) boleh mewakili satu set rentetan yang unik. Contohnya:

m := make(map[string]bool)

m["aaa"] = true
m["bbb"] = true
m["bbb"] = true  // Ignored as "bbb" already exists
m["ccc"] = true
Salin selepas log masuk

Pendekatan ini memberikan gambaran yang boleh dibaca dan intuitif bagi satu set.

Pilihan 2: Peta dengan Nilai Struktur

Untuk penggunaan memori yang minimum, peta dengan jenis nilai struct{} boleh digunakan. Memandangkan struct tidak menduduki memori, pilihan ini mengurangkan overhed memori dengan ketara.

m := make(map[string]struct{})

m["aaa"] = struct{}{}
m["bbb"] = struct{}{}
m["bbb"] = struct{}{}  // Ignored as "bbb" already exists
m["ccc"] = struct{}{}
Salin selepas log masuk

Cara Menyemak Kewujudan

Untuk memastikan sama ada unsur hadir dalam set, anda boleh memanfaatkan nilai sifar bool atau simpulan bahasa koma-ok dengan struct pendekatan:

Pilihan 1:

exists := m["somevalue"]  // If "somevalue" is in the map, exists is true; otherwise, false
Salin selepas log masuk

Pilihan 2:

_, exists := m["somevalue"]  // exists is true if "somevalue" is in the map; false otherwise
Salin selepas log masuk

Memelihara Pesanan

Jika mengekalkan susunan sisipan adalah penting, pertimbangkan untuk menggunakan gabungan kepingan untuk memelihara ketenteraman dan peta untuk pengesahan keunikan. Contoh fungsi pembantu:

func add(s string) {
    if m[s] {
        return // Already in the map
    }
    a = append(a, s)
    m[s] = true
}
Salin selepas log masuk

Menggunakan pendekatan ini membolehkan anda membuat set rentetan unik yang teratur.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Susunan Rentetan Unik dalam Go dengan Cekap?. 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