如何利用 golang 中泛类型
时间: 2023-07-26 08:23:49 浏览: 142
golang中文手册.rar
在 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 还没有完全支持泛型,只能使用泛型类型参数来实现一些简单的功能。
阅读全文