Generics in Go mendayakan penggunaan semula kod dengan menggunakan parameter jenis untuk mencipta fungsi dan algoritma boleh guna semula, dengan itu mengurangkan lebihan dan meningkatkan kebolehselenggaraan kod. Fungsi generik membolehkan membandingkan nilai maksimum jenis yang berbeza (seperti int dan rentetan) dan mengesahkan sama ada unsur hadir dalam kepingan menggunakan algoritma boleh guna semula, menyediakan alat yang berkuasa untuk penggunaan semula dan fleksibiliti kod.
Guna semula kod menggunakan generik dalam Go
Pengenalan
Generik membenarkan penciptaan kod boleh guna semula ke atas pelbagai jenis, sekali gus mengurangkan redundansi dan meningkatkan kebolehselenggaraan kod. Go 1.18 memperkenalkan generik, menyediakan alat baharu yang berkuasa untuk penggunaan semula kod.
Buat fungsi boleh guna semula menggunakan generik
Untuk mencipta fungsi generik, anda perlu menentukan parameter jenis menggunakan kurungan segi empat sama []:
func Max[T comparable](x, y T) T { if x > y { return x } return y }
Fungsi ini menggunakan parameter jenis T
sebagai jenis unsur yang hendak dibandingkan. Disebabkan oleh penggunaan kekangan comparable
, fungsi hanya boleh digunakan pada jenis yang setanding antara satu sama lain. T
用作比较的元素类型。由于使用 comparable
约束,函数只能用于可以相互比较的类型。
实战案例
比较不同类型的最大值
我们可以使用泛型函数 Max
来比较不同类型的最大值:
var x int = 10 var y string = "five" fmt.Println(Max(x, y)) // 编译器错误,类型不匹配
要修复此错误,我们需要显式转换为匹配的类型:
yInt, _ := strconv.Atoi(y) fmt.Println(Max(x, yInt)) // 输出:10
验证元素是否在切片中
泛型还可以用于编写可重用算法,例如验证元素是否存在于切片中:
func Contains[T comparable](slice []T, element T) bool { for _, v := range slice { if v == element { return true } } return false }
实战案例
搜索整数切片中的元素
我们可以使用 Contains
Kes praktikal
Membandingkan nilai maksimum dari jenis yang berbeza
🎜🎜Kita boleh menggunakan fungsi generikslice := []int{1, 2, 3} fmt.Println(Contains(slice, 2)) // 输出:true
Atas ialah kandungan terperinci Petua untuk melaksanakan penggunaan semula kod menggunakan generik dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!