Apabila Mengembalikan Slice daripada Fungsi, Bagaimanakah Kekangan Slice Mempengaruhi Pemeliharaan Jenis?

Patricia Arquette
Lepaskan: 2024-10-23 15:45:02
asal
767 orang telah melayarinya

When Returning Slices from Functions, How Do Slice Constraints Affect Type Preservation?

Argumen Slice Generik lwn. Kekangan Jenis Slice

Dalam pakej kepingan percubaan Go, dua fungsi, Mengandungi dan Tumbuh, ambil hujah dengan jenis yang berbeza kekangan. Mengandungi mengambil jenis []E generik, manakala Grow mengekang jenis hujahnya menjadi kepingan (~[]E).

Kekangan Jenis

Kekangan jenis, dilambangkan dengan ~, memastikan bahawa jenis mematuhi antara muka atau set peraturan tertentu. Dalam Grow, kekangan ~[]E menguatkuasakan bahawa jenis hujah akhirnya mestilah hirisan dengan jenis elemen E.

Fungsi Setara?

Walaupun terdapat kekangan jenis yang berbeza , operasi yang tersedia dalam kedua-dua fungsi kelihatan hampir sama. Walau bagaimanapun, perbezaan praktikal utama muncul apabila fungsi mesti mengembalikan sekeping jenis yang sama dengan hujah input.

Mengembalikan Slices

Apabila mengembalikan sekeping jenis yang sama sebagai input, adalah penting untuk menggunakan kekangan jenis seperti ~[]E. Ini membenarkan fungsi untuk mengekalkan jenis hirisan input yang dinamakan.

Pertimbangkan dua versi Grow():

// Preserves named type
func Grow[S ~[]E, E any](s S, n int) S {...}

// Returns unnamed type
func Grow2[E any](s []E, n int) []E {...}
Salin selepas log masuk

Jika Grow() menerima jenis kepingan tersuai, ia boleh kembali sekeping jenis yang sama, manakala Grow2() akan sentiasa mengembalikan kepingan tanpa nama.

Demonstrasi

type MyInts []int
x := MyInts{1} // Custom slice type
x2 := Grow(x, 10) // Type preserved
x3 := Grow2(x, 10) // Unnamed type
Salin selepas log masuk

Dalam contoh ini, x2 akan menjadi sekeping taip MyInts, manakala x3 akan menjadi kepingan tanpa nama.

Kesimpulan

Apabila anda perlu mengekalkan jenis hirisan input yang dinamakan dalam nilai pulangan, adalah perlu untuk menggunakan kekangan jenis seperti ~[]E. Jika tidak, kepingan yang dikembalikan akan sentiasa menjadi jenis yang tidak dinamakan.

Atas ialah kandungan terperinci Apabila Mengembalikan Slice daripada Fungsi, Bagaimanakah Kekangan Slice Mempengaruhi Pemeliharaan Jenis?. 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!