Go语言中泛型
泛型的概念不再赘述,Go语言在1.18版本开始支持泛型。在之前的版本中不支持泛型,通常通过反射去解决问题。
Go语言中泛型的语法表示如下:方括号内为类型参数列表。
下面看一个例子:实现slice反转
import "fmt"
func reverseSlice[T any](s []T) []T {
l := len(s)
if l == 0 {
return s
}
for i := 0; i < l/2; i++ {
s[i], s[l-i-1] = s[l-i-1], s[i]
}
return s
}
func main() {
s1 := []string{"abc", "def", "egh", "ijk"}
s2 := []int{1, 2, 3, 4, 5, 6}
s3 := []float64{1.46577, 2.1465465, 3.4697, 4.484431}
type student struct {
name string
age int
}
s4 := []student{
{"Anton", 30},
{"Jack", 28},
{"Lisa", 25},
{"Amy", 31},
}
fmt.Println(reverseSlice(s1))
fmt.Println(reverseSlice(s2))
fmt.Println(reverseSlice(s3))
fmt.Println(reverseSlice(s4))
}
// [ijk egh def abc]
// [6 5 4 3 2 1]
// [4.484431 3.4697 2.1465465 1.46577]
// [{Amy 31} {Lisa 25} {Jack 28} {Anton 30}]

