Bila hendak menggunakan Slice Arguments Terkandas kepada Slice Type vs. Generic Slice Arguments dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-10-24 04:55:30
asal
360 orang telah melayarinya

When to Use Slice Arguments Constrained to Slice Types vs. Generic Slice Arguments in Go?

Argumen Slice Generik: Memahami Perbezaan

Dalam Go, pengaturcaraan generik memperkenalkan parameter jenis yang membolehkan fungsi beroperasi pada jenis yang berbeza. Satu bidang yang menarik ialah perbezaan antara hujah hirisan yang terhad kepada jenis hirisan dan argumen hirisan generik.

Argumen hirisan dikekang kepada jenis hirisan

Pertimbangkan hirisan.Tumbuhkan fungsi dengan hujah pertama dikekang oleh ~[]E. Ini bermakna jenis hujah ini mestilah jenis hirisan dengan jenis unsur E.

Argumen Slice Generik

Sebaliknya, pertimbangkan hirisan.Mengandungi fungsi dengan hujah pertama hanya ditaip sebagai []E. Ini membenarkan sebarang jenis hirisan dengan jenis elemen E.

Perbezaan Praktikal

Pada mulanya, nampaknya kedua-dua jenis hujah keping ini berkelakuan serupa, kerana kedua-duanya kedua-duanya membenarkan fungsi mengakses operasi hirisan seperti tambah dan julat. Walau bagaimanapun, terdapat perbezaan yang halus tetapi penting apabila ia datang untuk mengembalikan kepingan.

Memulangkan Sekeping

Jika fungsi memerlukan pengembalian sekeping jenis yang sama seperti hirisan input, anda mesti menggunakan hujah keratan terhad kepada jenis keratan (~[]E). Ini memastikan bahawa kepingan yang dikembalikan mempunyai jenis asas yang betul.

Contoh

Mari kita bandingkan dua pelaksanaan Grow(): satu menggunakan ~[]E dan satu lagi menggunakan [ ]E.

<code class="go">func Grow[S ~[]E, E any](s S, n int) S {
    // ...
}

func Grow2[E any](s []E, n int) []E {
    // ...
}</code>
Salin selepas log masuk

Jika kita menghantar kepingan jenis tersuai (cth., []MyInt), Grow() boleh mengembalikan nilai jenis yang sama. Walau bagaimanapun, Grow2() hanya boleh mengembalikan jenis kepingan generik ([]E).

Kesimpulan

Ringkasnya, jika anda perlu mengembalikan kepingan yang sama taip sebagai hirisan input, anda mesti menggunakan hujah keratan terhad kepada jenis keratan (~[]E). Jika tidak, menggunakan hujah hirisan generik sudah memadai.

Atas ialah kandungan terperinci Bila hendak menggunakan Slice Arguments Terkandas kepada Slice Type vs. Generic Slice Arguments dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!