Generik bahasa Go menyediakan sokongan berbilang jenis, membenarkan pembangun membuat kod yang boleh digunakan untuk berbilang jenis. Sintaks generik mengisytiharkan jenis generik dengan menentukan parameter jenis dalam nama jenis dan secara automatik membuat kesimpulan parameter jenis dalam panggilan fungsi. Generik menyokong jenis yang setanding dan boleh digunakan untuk mencipta algoritma dan fungsi biasa, seperti algoritma pengisihan universal, yang menggunakan fungsi perbandingan tersuai untuk mengisih pelbagai jenis.
Go bahasa memperkenalkan ciri generik dalam versi 1.18, membenarkan pembangun mencipta kod yang boleh digunakan untuk berbilang jenis. Generik boleh meningkatkan kebolehgunaan semula dan fleksibiliti kod.
Apabila mengisytiharkan jenis generik, anda perlu menentukan parameter jenis dalam kurungan segi empat sama dalam nama jenis:
func Max[T comparable](a, b T) T { if a > b { return a } return b }
Apabila menggunakan jenis generik dalam panggilan fungsi, pengkompil Golang akan membuat kesimpulan secara automatik parameter jenis:
fmt.Println(Max(1, 2)) // 输出:2 fmt.Println(Max(1.2, 3.4)) // 输出:3.4 fmt.Println(Max("Hello", "Wolrd")) // 输出:Wolrd
Perlu diingatkan bahawa jenis generik hanya menyokong jenis yang setanding (comparable
).
Menggunakan generik, kita boleh mencipta algoritma pengisihan universal yang berfungsi untuk sebarang jenis:
func Sort[T any](arr []T, less func(T, T) bool) { for i := 0; i < len(arr); i++ { for j := 0; j < len(arr)-1-i; j++ { if less(arr[j], arr[j+1]) { arr[j], arr[j+1] = arr[j+1], arr[j] } } } }
Menggunakan fungsi perbandingan tersuai, kita boleh menggunakan algoritma pengisihan ini untuk pelbagai jenis:
func SortInts(arr []int) { Sort(arr, func(a, b int) bool { return a < b }) } func SortStrings(arr []string) { Sort(arr, func(a, b string) bool { return a < b }) }
Ciri generik dalam bahasa Go menyediakan sokongan pelbagai jenis yang berkuasa, membolehkan pembangun mencipta kod yang boleh digunakan semula dan fleksibel. Dengan menggunakan teknik yang dibentangkan di atas, kami boleh mencipta algoritma dan fungsi umum dengan mudah yang berfungsi merentas pelbagai jenis.
Atas ialah kandungan terperinci Generik bahasa Go melaksanakan sokongan berbilang jenis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!