本文将带你从零开始,理解Go 泛型的概念、语法、使用方式,并配有示例代码,帮助你快速上手。
文章目录
Go 语言自 1.18 版本起支持 泛型(Generics) ,这让 Go 代码可以更加通用,减少重复代码,提高开发效率。Go 1.24 进一步增强了泛型支持,引入了 泛型类型别名,让代码更简洁。
本文将带你从零开始,理解 Go 泛型的概念、语法、使用方式,并配有示例代码,帮助你快速上手。
什么是泛型?
简单来说,泛型 就是让我们编写可以适用于多种数据类型的代码。换句话说,泛型让你可以定义一个函数或数据结构,它可以处理任何类型的数据,而不需要事先指定类型。你只需要在使用时决定具体的类型。
1. 泛型函数
泛型函数是泛型最基本的应用。它允许你编写一个函数,可以接收任何类型的参数并返回相应的结果。
示例:一个求长度的泛型函数
假设你要写一个求切片长度的函数。没有泛型时,你可能需要为不同类型的切片写不同的函数:
func LengthInt(s []int) int {
return len(s)
}
func LengthString(s []string) int {
return len(s)
}
但有了泛型,我们就可以写一个通用的函数来处理不同类型的切片:
func Length[T any](s []T) int {
return len(s)
}
这里的 T
是泛型类型,它表示函数 Length
可以接受任何类型的切片。any
表示“任何类型都行”。这样,你就可以用它来求任意类型切片的长度了:
sliceInt := []int{1, 2, 3, 4, 5}
sliceString := []string{"a", "b", "c"}
fmt.Println(Length(sliceInt)) // 输出: 5
fmt.Println(Length(sliceString)) // 输出: 3
2. 泛型结构体
除了函数,结构体 也可以使用泛型。这意味着你可以写一个通用的数据结构,适应不同类型的数据。
阅读全文:Go 语言泛型用法详解 - 阿小信的博客
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。