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
Patricia Arquetteasal
2024-12-22 15:49:14383semak imbas

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
}

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!

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