Mengindeks Kekangan dalam Go 1.18 Generik
Dengan pengenalan generik dalam Go 1.18, pembangun mempunyai peluang untuk melaksanakan algoritma yang berfungsi dengan khusus jenis. Satu keperluan biasa ialah menggunakan jenis yang menyokong pengindeksan, seperti tatasusunan, kepingan, peta dan rentetan.
Kekangan Boleh Indeks
Untuk mengehadkan parameter jenis kepada jenis boleh diindeks , pertimbangkan untuk menggunakan kekangan berikut dengan kesatuan:
<code class="go">type Indexable interface { ~[]byte | ~string }</code>
Had Kekangan Boleh Indeks
Walaupun kekangan di atas berfungsi untuk mengindeks bait dan rentetan, terdapat had untuk menggunakannya dengan jenis boleh diindeks lain, seperti peta dan tatasusunan:
Pendekatan Alternatif
Disebabkan batasan ini, satu-satunya kesatuan praktikal yang menyokong pengindeksan ialah []bait | rentetan. Kesatuan ini membenarkan operasi pengindeksan tetapi tidak menyokong operasi julat kerana ia tidak mempunyai jenis teras.
Contoh Penggunaan
Contoh berikut menunjukkan cara menggunakan kekangan Boleh Indeks:
<code class="go">func GetAt[T Indexable](v T, i int) byte { return v[i] }</code>
Fungsi ini mengambil nilai boleh diindeks dan indeks serta mengembalikan bait pada indeks yang ditentukan.
Kesimpulan
Sementara Go 1.18 menyediakan satu cara untuk mengekang jenis kepada jenis boleh diindeks menggunakan kesatuan, pengehadan kekangan itu bermakna ia hanya praktikal untuk set kes penggunaan terhad, iaitu mengindeks bait dan rentetan.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengekang Jenis Boleh Diindeks dengan Berkesan dalam Go 1.18 Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!