Bagaimana untuk Mengekang Jenis untuk Kebolehindeksan dalam Go Generics?

Mary-Kate Olsen
Lepaskan: 2024-10-30 23:01:30
asal
926 orang telah melayarinya

How to Constrain Types for Indexability in Go Generics?

Jenis Mengekang untuk Kebolehindeksan dalam Go Generik

Pengindeksan ialah operasi asas dalam banyak senario pengaturcaraan. Apabila bekerja dengan generik, adalah berfaedah untuk mengekang parameter jenis generik kepada jenis yang menyokong pengindeksan. Ini memastikan bahawa jenis asas boleh diakses dan diubah suai menggunakan sintaks subskrip biasa.

Salah satu cara untuk mencapai ini adalah melalui penggunaan kekangan antara muka. Antara muka mentakrifkan satu set operasi yang diperlukan untuk sesuatu jenis untuk dilaksanakan. Dalam kes ini, kami boleh mentakrifkan antara muka bernama Boleh Diindeks yang mewakili jenis yang menyokong pengindeksan melalui pengendali subskrip:

<code class="go">type Indexable interface {
    ~[]byte | ~string
}</code>
Salin selepas log masuk

Dengan menggunakan operator ~, kami membenarkan antara muka menerima kedua-dua jenis secara terus dan penunjuk kepada mereka jenis. Ini memberi kita kefleksibelan untuk bekerja dengan sama ada nilai atau semantik rujukan.

Seterusnya, kita boleh mencipta fungsi generik yang mengambil jenis Boleh Indeks sebagai parameter. Fungsi ini boleh melakukan operasi pada jenis yang melibatkan pengindeksan:

<code class="go">func GetAt[T Indexable](v T, i int) byte {
    return v[i]
}</code>
Salin selepas log masuk

Fungsi GetAt mengembalikan nilai bait pada indeks yang ditentukan. Ia boleh digunakan dengan mana-mana jenis yang melaksanakan antara muka Boleh Indeks, termasuk tatasusunan bait dan rentetan:

<code class="go">var data []byte = []byte{1, 2, 3, 4, 5}
result := GetAt(data, 2) // result is 3</code>
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa menggunakan kekangan kesatuan mengehadkan set operasi yang boleh digunakan dalam fungsi. Ini kerana kekangan kesatuan mengehadkan hujah jenis kepada hujah yang berkongsi set operasi biasa.

Kesimpulannya, menggunakan kekangan antara muka yang mewakili kebolehindeksan boleh menjadi teknik yang berguna untuk mengekang jenis generik. Ia membolehkan anda menulis kod generik yang boleh beroperasi pada sebarang jenis yang menyokong pengindeksan.

Atas ialah kandungan terperinci Bagaimana untuk Mengekang Jenis untuk Kebolehindeksan dalam Go Generics?. 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