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

全部评论

相关推荐

2024-12-20 18:56
已编辑
武汉轻工大学 后端
牛牛大啊:er图都冒出来了😂
点赞 评论 收藏
分享
02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务