Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Kekangan Setanding Go Boleh Memastikan Kunci Peta Boleh Dipercayai dalam Pengaturcaraan Generik?
Pengaturcaraan generik Go memperkenalkan kekangan jenis, yang membolehkan kami menguatkuasakan keperluan tertentu pada jenis yang digunakan dalam fungsi generik dan struktur data . Walau bagaimanapun, apabila menggunakan jenis generik sebagai kunci peta, beberapa had timbul.
Dalam coretan kod yang disediakan:
package main import "fmt" type List[X comparable] interface { isList() }
Kami mentakrifkan senarai pautan generik dengan kekangan jenis yang memerlukan elemen jenis X untuk dibandingkan. Ini memastikan elemen senarai boleh digunakan sebagai kunci peta.
Walau bagaimanapun, apabila kita cuba menggunakan contoh konkrit Cons[int] sebagai kunci peta dan mengakses nilainya (iaitu, fmt.Println(id (x))), kami menghadapi ralat penyusunan: Cons[int] tidak melaksanakan setanding.
Dalam Go, kekangan sebanding yang diisytiharkan terlebih dahulu memastikan bahawa jenis menyokong pengendali kesaksamaan (== dan !=) tanpa menyebabkan panik pada masa jalan. Kekangan ini dikenakan pada kekunci peta, bermakna hanya jenis yang boleh dibandingkan dengan pasti boleh digunakan sebagai kunci.
Penyelesaian kepada isu ini adalah dengan menggunakan yang diisytiharkan terlebih dahulu kekangan setanding:
type List[X comparable] interface { isList() }
Kekangan ini menjamin bahawa kunci peta akan ketat setanding, mengelakkan panik yang berpotensi semasa perbandingan utama.
Walaupun nampaknya intuitif untuk menggunakan kekangan jenis yang lebih lemah untuk kunci peta, kekangan sebanding yang diisytiharkan sebelum ini ialah pilihan yang sesuai dan cekap dalam Go. Ia memastikan kebolehpercayaan perbandingan utama dan mengelakkan kemungkinan ralat masa jalan yang dikaitkan dengan jenis yang tidak setanding.
Atas ialah kandungan terperinci Bagaimanakah Kekangan Setanding Go Boleh Memastikan Kunci Peta Boleh Dipercayai dalam Pengaturcaraan Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!