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}]