Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apabila Mengembalikan Slice daripada Fungsi, Bagaimanakah Kekangan Slice Mempengaruhi Pemeliharaan Jenis?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-23 15:45:02768semak imbas

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 {...}

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

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!

Kenyataan:
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