
20.泛型1.18+
Go泛型
详细请看: https://blog.zjzaki.com/archives/1691905054612
1.什么是泛型
Go并不是一种静止的, 一成不变的语言. 新的功能是在经过大量的讨论和实验后慢慢采用的
最初的Go 1.0发布依赖, Go语言习惯的模式已经发生了重大变化
1.7的context, 1.11的modules, 1.13error嵌套等
Go的1.18版本包括了类型参数的实现, 也就是俗称的泛型
泛型虽然很受期待, 但实际上推荐的场景也并没有那么广泛
但是我们作为学习者, 一定要了解学会, 遇到了至少不懵逼
package main
import "fmt"
func main() {
strs := []string{"zzz", "aaa"}
printArray(strs)
is := []int{1,2}
printArray(is)
}
/*
内置的泛型类型any和comparable
-- ** any: 表示go里面所有的内置基本类型, 等价于 `interface{}`
--comparable: 表示go里面所有内置的课比较类型: `int, uint, float, bool, struct, 指针`
*/
func printArray[T string | int](arr []T) {
for _, a := range arr {
fmt.Println(a)
}
}
2.泛型函数
package main
type MySlice
[T int|float64] []T
func (s MySlice[T]) Sum() T {
var sum T
for _, v := range s {
sum += v
}
return sum
}
func main() {
var s MySlice[int] = []int{1, 2, 3, 4}
fmt.println(s.Sum())
}
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果