Rumah > Artikel > pembangunan bahagian belakang > Bolehkah Anda Mengekang Jenis untuk Menyokong Indeks dalam Go 1.18 Generik?
Dengan pengenalan generik dalam Go 1.18, pembangun boleh menentukan jenis dengan kekangan jenis, memastikan hanya jenis tertentu dibenarkan. Fleksibiliti ini menjadi penting apabila melaksanakan algoritma yang bergantung pada jenis yang menyokong indeks.
Bolehkah Anda Mengekang Jenis dengan Kaedah Indeks?
Untuk mengekang jenis dengan indeks, seseorang mungkin mempertimbangkan menggunakan sifat boleh indeks. Walau bagaimanapun, satu-satunya kekangan bermakna yang boleh anda buat ialah taip Antara muka boleh indeks { ~[]bait | ~ rentetan }. Kekangan ini mengehadkan jenis kepada hirisan bait dan rentetan.
Mengapa Kekangan Kesatuan Terhad?
Operasi yang dibenarkan pada jenis kekangan kesatuan adalah terhad kepada yang disokong oleh semua jenis dalam set kekangan. Untuk menyokong pengindeksan, jenis dalam kesatuan mesti mempunyai jenis kunci dan elemen yang sama.
Selain itu, jenis peta dalam kesatuan mesti mempunyai jenis kunci yang sama. Dan untuk tatasusunan, panjangnya adalah sebahagian daripada jenis, menjadikannya tidak praktikal untuk menentukan kesatuan untuk semua panjang yang mungkin.
Pelaksanaan Praktikal untuk Pengindeksan
Oleh itu, satu-satunya kesatuan yang memenuhi keperluan pengindeksan ialah []bait | rentetan. Oleh kerana bait ialah alias untuk uint8, anda juga boleh menggunakan []uint8 dengan kekangan ini.
Had Kekangan Kesatuan untuk Pengindeksan
Sementara kekangan kesatuan []bait | rentetan menyokong pengindeksan, ia tidak menyokong julat. Ini kerana kesatuan itu tidak mempunyai jenis teras.
Kesimpulannya, mengekang jenis kepada mereka yang menyokong indeks dalam Go generik adalah terhad kepada jenis kekangan tertentu Antara muka boleh indeks { ~[]bait | ~ rentetan }. Selain daripada ini, tiada cara alternatif untuk menentukan kekangan yang merangkumi semua jenis boleh diindeks.
Atas ialah kandungan terperinci Bolehkah Anda Mengekang Jenis untuk Menyokong Indeks dalam Go 1.18 Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!