Golang ,泛型被称为参数化类型,可以使用类型参数来定义。在函数或结构体使用类型参数,可以使代码更加灵活,同时也可以提高代码的可复用性。 定义一个泛型函数的语法如下: ```go func 函数名[T any](参数列表) 返回值列表 { // 函数体 } ``` 在函数名后面的方括号定义类型参数 T,使用 `any` 关键字表示 T 可以是任何类型。在函数体,可以使用 T 来表示任意类型。 下面是一个利用泛型实现排序的例子: ```go package main import ( "fmt" "sort" ) func main() { nums := []int{3, 2, 1, 4, 5} strs := []string{"hello", "world", "go", "lang"} sort.Slice(nums, func(i, j int) bool { return nums[i] < nums[j] }) fmt.Println(nums) sort.Slice(strs, func(i, j int) bool { return strs[i] < strs[j] }) fmt.Println(strs) } ``` 在上述代码,我们使用了 `sort.Slice` 函数来对切片进行排序。该函数接受两个参数,第一个参数是要排序的切片,第二个参数是一个函数,用于比较两个元素的大小。由于比较函数的参数类型是不确定的,我们可以使用泛型类型参数来代表这个类型。在上述代码,我们使用了 `int` 和 `string` 两种类型进行排序,但是可以使用任何类型来进行排序。 泛型是 Golang 的一个重要特性,可以提高代码的灵活性和可复用性。但是,目前 Golang 还没有完全支持泛型,只能使用泛型类型参数来实现一些简单的功能。