Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang tidak berulang beratur

golang tidak berulang beratur

WBOY
WBOYasal
2023-05-15 11:37:36510semak imbas

Semasa proses pembangunan, baris gilir ialah struktur data yang sangat praktikal. Apabila menggunakan baris gilir, anda mungkin menghadapi beberapa masalah, seperti cara melaksanakan tiada baris gilir berulang.

Dalam banyak senario, kita perlu menambah elemen pada baris gilir, tetapi jika elemen itu sudah wujud dalam baris gilir, kita perlu mengabaikannya untuk mengelakkan penambahan unsur pendua. Pada masa ini, kita perlu menggunakan baris gilir bukan pendua.

Di Golang, kami boleh menggunakan peta untuk melaksanakan baris gilir bukan pendua. Secara khusus, kita boleh meletakkan elemen ke dalam peta sebagai kunci, dan nilai boleh ditetapkan kepada nilai benar atau mana-mana nilai lain. Jika kunci sudah wujud dalam peta, kita boleh mengabaikannya. Jika tidak, kita boleh menambah elemen pada baris gilir.

Berikut ialah contoh kod yang menggunakan peta untuk melaksanakan baris gilir bukan pendua:

type uniqueQueue struct {
    items map[string]bool
    queue []string
}

func newUniqueQueue() *uniqueQueue {
    return &uniqueQueue{
        items: make(map[string]bool),
        queue: []string{},
    }
}

func (q *uniqueQueue) enqueue(item string) {
    if !q.items[item] {
        q.items[item] = true
        q.queue = append(q.queue, item)
    }
}

func (q *uniqueQueue) dequeue() string {
    item := q.queue[0]
    q.queue = q.queue[1:]
    delete(q.items, item)
    return item
}

func (q *uniqueQueue) isEmpty() bool {
    return len(q.queue) == 0
}

Dalam kod di atas, kami mentakrifkan jenis yang dipanggil uniqueQueue, yang mengandungi items peta dan tatasusunan queue. items digunakan untuk menyimpan elemen yang telah wujud dalam baris gilir, dan queue digunakan untuk menyimpan susunan elemen dalam baris gilir.

Kami melaksanakan fungsi menambah elemen pada baris gilir dalam kaedah enqueue. Apabila menambah elemen, kita perlu menentukan sama ada elemen itu wujud dalam items. Jika ia tidak wujud, kita boleh menambah elemen pada queue dan menetapkan nilai yang sepadan bagi elemen dalam items kepada benar. Jika tidak, kita perlu mengabaikan unsur tersebut.

Dalam kaedah dequeue, kami melaksanakan fungsi mengalih keluar elemen daripada baris gilir. Khususnya, kami mula mengalih keluar elemen pertama baris gilir dan memadamkan elemen dalam items. Akhirnya, kami mengembalikan elemen yang dialih keluar.

Dalam kaedah isEmpty, kami menentukan sama ada baris gilir kosong. Kaedah ini kembali benar jika tiada unsur dalam baris gilir.

Menggunakan kod di atas, kami boleh melaksanakan baris gilir bukan pendua dengan mudah dan mengelakkan penampilan elemen pendua, sekali gus meningkatkan kecekapan dan prestasi kod.

Atas ialah kandungan terperinci golang tidak berulang beratur. 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
Artikel sebelumnya:ralat antara muka golang 504Artikel seterusnya:ralat antara muka golang 504