Generics in Go menyediakan kebolehgunaan semula kod, membolehkan penciptaan kod yang boleh digunakan dengan pelbagai jenis data. Berbanding dengan generik Java dan C++, generik Go mempunyai overhed prestasi yang lebih rendah, tetapi inferens jenis hanya bersyarat dan mempunyai kekangan terhad.
Generik ialah ciri bahasa pengaturcaraan yang membolehkan penciptaan kod yang berfungsi dengan pelbagai jenis data. Go 1.18 memperkenalkan generik, membawa perubahan besar kepada ekosistemnya. Artikel ini akan membandingkan persamaan dan perbezaan antara generik dalam Go dan ciri bahasa lain serta memberikan contoh praktikal.
Ciri | Go | Java | C++ |
---|---|---|---|
Go | func name[T any](t T) |
class Box<t></t> |
template<typename t></typename> Java |
nama T mana-mana](t T) | |||
ya | tidak | no | |
bersyarat | ya | ya |
tidak terhad
lebih rendah 🎜🎜 lebih rendah 🎜🎜Lebih tinggi🎜🎜🎜🎜 🎜 Contoh Praktikal: Mengisih Fungsi Generik 🎜🎜Contoh berikut menunjukkan cara menggunakan fungsi generik untuk mengisih tatasusunan pelbagai jenis: 🎜
type Ordered interface { Less(a, b Ordered) bool } func Sort[T Ordered](arr []T) { for i := 0; i < len(arr)-1; i++ { for j := i + 1; j < len(arr); j++ { if arr[i].Less(arr[j]) { arr[i], arr[j] = arr[j], arr[i] } } } } type Int struct{ i int } func (a Int) Less(b Int) bool { return a.i < b.i } type String struct{ s string } func (a String) Less(b String) bool { return a.s < b.s } func main() { arr1 := []Int{{1}, {3}, {2}} arr2 := []String{"a", "c", "b"} Sort(arr1) Sort(arr2) fmt.Println(arr1) // [{1} {2} {3}] fmt.Println(arr2) // [{a} {b} {c}] }
Atas ialah kandungan terperinci Perbandingan generik dan ciri bahasa lain dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!