Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh menggunakan struct dengan berkesan untuk mencipta kunci komposit dalam peta Go?

Bagaimanakah saya boleh menggunakan struct dengan berkesan untuk mencipta kunci komposit dalam peta Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-10 04:12:03261semak imbas

How can I effectively use structs to create composite keys in Go maps?

Menggunakan Structs untuk Kekunci Komposit dalam Peta Go

Dalam Go, kunci komposit dalam peta cincang membenarkan penggabungan berbilang nilai untuk membentuk kunci unik untuk peta itu. Tidak seperti kunci komposit dalam pangkalan data, ini digunakan untuk tujuan pengiraan.

Untuk menyimpan nilai pengiraan pow(x, y) dalam jadual cincang, anda boleh mentakrifkan kunci komposit menggunakan struct:

type Key struct {
    X, Y int
}

Struktur ini menggabungkan nilai x dan y untuk mencipta kunci. Anda boleh menggunakan kunci ini dalam peta seperti berikut:

m := map[Key]int{}
m[Key{2, 2}] = 4
m[Key{2, 3}] = 8

fmt.Println("2^2 =", m[Key{2, 2}])
fmt.Println("2^3 =", m[Key{2, 3}])

Output:

2^2 = 4
2^3 = 8

Struktur digunakan sebagai kunci kerana ia menyediakan cara mudah untuk mewakili berbilang nilai sebagai satu unit . Mereka memastikan operator perbandingan yang betul (== dan !=) ditakrifkan, membenarkan pengambilan kunci yang cekap daripada peta.

Menggunakan penunjuk sebagai jenis kunci tidak disyorkan, kerana perbandingan penunjuk hanya menyemak alamat memori dan bukannya nilai sebenar . Tatasusunan juga boleh digunakan sebagai jenis utama, tetapi struktur menawarkan lebih fleksibiliti.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan struct dengan berkesan untuk mencipta kunci komposit dalam peta Go?. 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