Rumah > pembangunan bahagian belakang > Golang > Bolehkah Kekangan `sebanding` Go Generics Dilemahkan untuk Kunci Peta dalam Versi Pra-1.20?

Bolehkah Kekangan `sebanding` Go Generics Dilemahkan untuk Kunci Peta dalam Versi Pra-1.20?

Susan Sarandon
Lepaskan: 2024-12-17 02:51:25
asal
654 orang telah melayarinya

Can Go Generics' `comparable` Constraint Be Weakened for Map Keys in Pre-1.20 Versions?

Go Generics: Kekangan Taip untuk Kekunci Peta

Masalah:

Apabila menggunakan senarai terpaut yang ditakrifkan secara umum sebagai kekunci peta dalam Go 1.18, mesej ralat muncul menunjukkan bahawa senarai terpaut tidak melaksanakan antara muka setanding. Adakah terdapat kekangan alternatif yang lebih lemah yang sesuai untuk tujuan ini?

Jawapan:

Go 1.20 (Februari 2023)

The kekangan setanding ialah kekangan tangkap semua yang sesuai untuk kunci peta. Dalam Go 1.20, ketidakkonsistenan antara jenis yang setanding dengan spesifikasi dan sebanding diselesaikan, membolehkan kod anda dikompil dengan jayanya.

Go 1.18 dan 1.19

Kekangan setanding dalam Go 1.18 dan 1.19 direka bentuk untuk jenis setanding ketat yang menyokong == dan != tanpa panik masa larian. Ini tidak termasuk antara muka, malah antara muka yang menyokong pengendali kesaksamaan. Memandangkan antara muka mempunyai set jenis tak terhingga, ia tidak boleh dijadikan instantiated sebagai setanding.

Untuk menangani perkara ini, pertimbangkan untuk menggunakan kekangan tersuai yang membenamkan setanding, seperti:

type List interface {
    comparable
    isList() bool
}
Salin selepas log masuk

Melaksanakan kekangan ini secara berstruktur akan membenarkan senarai terpaut digunakan sebagai kunci peta.

Atas ialah kandungan terperinci Bolehkah Kekangan `sebanding` Go Generics Dilemahkan untuk Kunci Peta dalam Versi Pra-1.20?. 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