Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Kekangan Jenis Go untuk Kekunci Peta Berevolusi Merentas Versi 1.18, 1.19 dan 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 }
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!