Go语言的泛型
func main() {
r := []int{1, 2, 3, 4}
fmt.Println(reverse(r))
r1 := []float64{1.1, 1.2, 1.3}
fmt.Println(reverse(r1))
r2 := []string{"as", "to", "way"}
fmt.Println(reverse2(r))
fmt.Println(reverse2(r1))
fmt.Println(reverse2(r2))
}
// any type param
func reverse[T any](s []T) []T {
l := len(s)
r := make([]T, l)
for i, e := range s {
r[l-i-1] = e
}
return r
}
// specify type param
func reverse2[T int | int64 | float64 | string](s []T) []T {
l := len(s)
r := make([]T, l)
for i, e := range s {
r[l-i-1] = e
}
return r
}