编辑
2023-10-08
后端
00
请注意,本文编写于 580 天前,最后修改于 580 天前,其中某些信息可能已经过时。

目录

Golang泛型

Golang泛型

go的泛型目前只对函数支持较好,具体语法如下,T后面的是约束,go的泛型必须有约束,[T any],[T int | int32 ...],或者这样

go
// 定义一个可以比较的接口 type Comparable interface { ~int | ~int16 | ~int32 | ~int64 | ~float32 | ~float64 }

这是一般约束使用

go
func Add[T int | int32 | int64 | float32 | float64](a, b T) T { return a + b }

我们可以用上面定义的约束

go
func Add[T Comparable](a, b T) T { return a + b }

一样的效果。使用的时候需要实例化

go
Add[int32](a,b) Add[float32](a,b) # 简单的数值类型go编译器能推导,如下使用也正确 Add(18,98) Add(3.24,2.324)

我们还可以定义泛型切片

go
type SliceOf[T Comparable] []T SliString := SliceOf[string]{"xxx", "yyy", "bbb"} SliInt := SliceOf[int]{520, 888, 999, 666} for v, k := range SliString { fmt.Println(v, k) } for v, k := range SliInt { fmt.Println(v, k) }

以上就是go泛型相关的讲解,能简化一些方法的使用,但是不完善

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!