Fungsi Generik dalam Go: Mendedahkan Interaksi Antara Muka dan Go 1.18
Dalam Go, keupayaan untuk beroperasi pada nilai pelbagai jenis ialah satu aspek penting dalam pengaturcaraan. Artikel ini meneroka penggunaan antara muka, konsep reka bentuk asas dalam Go, untuk mencapai fungsi ini.
Menggunakan Antara Muka untuk Fungsi Generik
Seperti yang dinyatakan dalam dokumentasi, kosongkan antara muka boleh menerima nilai apa-apa jenis. Ini berpunca daripada fakta bahawa mereka tidak mempunyai sebarang keperluan kaedah khusus. Pertimbangkan contoh berikut:
func describe(i interface{}) { fmt.Printf("Type: %T | Value: %v\n", i, i) }
Fungsi ini boleh memproses nilai jenis yang berbeza, seperti yang ditunjukkan di bawah:
describe(5) // "Type: int | Value: 5" describe("test") // "Type: string | Value: test"
Pendekatan ini menyediakan bentuk asas fungsi generik, membenarkan fungsi yang sama untuk mengendalikan berbilang jenis tanpa memerlukan pelaksanaan khusus jenis.
Go 1.18: A New Era untuk Pengaturcaraan Generik
Walau bagaimanapun, dengan pengenalan Go 1.18, cara yang lebih jelas dan berkuasa untuk mentakrifkan fungsi generik telah tersedia. Ini dicapai melalui penggunaan parameter jenis dan generik.
package main import ( "fmt" ) // T can be any type func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } func main() { // Passing list of string works Print([]string{"Hello, ", "world\n"}) // You can pass a list of int to the same function as well Print([]int{1, 2}) }
Output:
Hello, world 12
Sintaks baharu ini membolehkan takrifan fungsi generik yang boleh beroperasi pada sebarang jenis, meningkatkan lagi fleksibiliti dan jenis keselamatan kod Go. Fungsi generik dalam Go 1.18 menyediakan pendekatan yang lebih ringkas dan mantap untuk mengendalikan pelbagai jenis, menghapuskan keperluan untuk pelaksanaan fungsi jenis khusus.
Atas ialah kandungan terperinci Bagaimanakah Antara Muka Go dan Go 1.18 Generik Mendayakan Pengaturcaraan Fungsi Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!