Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Kekangan Jenis Go untuk Kekunci Peta Berevolusi Merentas Versi 1.18, 1.19 dan 1.20?

Bagaimanakah Kekangan Jenis Go untuk Kekunci Peta Berevolusi Merentas Versi 1.18, 1.19 dan 1.20?

Patricia Arquette
Lepaskan: 2024-12-22 15:49:14
asal
471 orang telah melayarinya

How Have Go's Type Constraints for Map Keys Evolved Across Versions 1.18, 1.19, and 1.20?

Go Generik: Kekangan Jenis untuk Kekunci Peta

Dalam Go1.18, mentakrifkan senarai terpaut generik yang boleh digunakan sebagai kunci peta gagal dengan ralat "Cons[int] does not implement comparable." Ini disebabkan oleh keperluan ketat untuk kunci peta untuk melaksanakan antara muka yang setanding, yang memastikan ia menyokong semakan kesaksamaan (== dan !=) tanpa panik.

Go 1.20 Update

Dalam Go 1.20, kekangan setanding kini dianggap sebagai tangkapan semua yang betul untuk kunci peta. Jenis yang dianggap setanding mengikut spesifikasi Go, walaupun perbandingan mungkin panik, akan memenuhi kekangan. Ini menyelesaikan ketidakkonsistenan antara jenis yang setanding mengikut spesifikasi dan yang setanding dengan ketat.

Pertimbangan Go 1.18 dan 1.19

Dalam Go 1.18 dan 1.19, kekangan setanding hanya boleh digunakan oleh jenis sebanding yang menyokong == dan != tanpa panik. Ini mengecualikan antara muka. Walaupun menyokong pengendali kesaksamaan, antara muka tidak melaksanakan setanding kerana jenis dan nilai dinamiknya dibandingkan. Ini bermakna struct Cons yang disediakan, yang mengandungi medan jenis List[X], tidak dapat melaksanakan setanding.

Kekangan Alternatif

Untuk menangani had ini, kekangan tersuai yang membenamkan setanding boleh ditakrifkan dan dilaksanakan oleh struct kunci peta dan bukannya menggunakan medan antara muka. Contohnya:

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

Sebagai kesimpulan, kekangan setanding kini merupakan kekangan jenis yang disyorkan untuk kunci peta dalam Go 1.20. Dalam Go 1.18 dan 1.19, antara muka tidak dapat dijadikan instantiated dengan setanding kerana set jenis infiniti mereka. Kekangan tersuai yang membenamkan setanding boleh digunakan sebagai alternatif.

Atas ialah kandungan terperinci Bagaimanakah Kekangan Jenis Go untuk Kekunci Peta Berevolusi Merentas Versi 1.18, 1.19 dan 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