Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Kami Boleh Mengekang Jenis Boleh Diindeks dengan Berkesan dalam Go 1.18 Generik?

Bagaimanakah Kami Boleh Mengekang Jenis Boleh Diindeks dengan Berkesan dalam Go 1.18 Generik?

Patricia Arquette
Lepaskan: 2024-10-30 03:49:28
asal
863 orang telah melayarinya

How Can We Effectively Constrain Indexable Types in Go 1.18 Generics?

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>
Salin selepas log masuk

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:

  • Peta: Kesatuan mesti mengandungi hanya jenis peta dengan jenis kunci dan elemen yang sama. Sekatan ini menjadikannya tidak praktikal untuk algoritma generik yang mesti mengendalikan peta dengan kunci dan nilai yang berbeza.
  • Tatasusunan: Panjang tatasusunan ialah sebahagian daripada jenisnya, jadi kesatuan perlu menentukan semua panjang yang mungkin. Ini boleh menyusahkan dan terdedah kepada ralat di luar sempadan.

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan