GoLang教程——泛型编程入门
在 Go 1.18 之前,由于缺乏泛型,我们想编写一个通用的 Min 函数(既能比对 int 也能比对 float),通常需要写两遍代码,或者使用性能较差的 interface{} 和反射。 Go 1.18 终于引入了 泛型 (Generics),允许我们在函数和类型定义中使用 类型参数 (Type Parameters)。这极大地提高了代码的复用性和类型安全性。 1. 泛型函数 先看一个传统的非泛型版本: func MinInt(a, b int) int { if a < b { return a } return b } // 如果要支持 float,还得再写一个 MinFloat... 使用泛型重写: import "fmt" // [T int | float64] 定义了类型参数 T // T 被限制为 int 或 float64(类型约束) func Min[T int | float64](a, b T) T { if a < b { return a } return b } func main() { // 显式实例化 fmt.Println(Min[int](10, 20)) // 隐式类型推导(推荐):编译器自动根据参数推导出 T 是 float64 fmt.Println(Min(3.14, 1.59)) } ...