Golang泛型

Golang泛型,第1张

Golang泛型

Golang 泛型

前言

Golang在1.18 beta版本正式推出泛型。

泛型新功能
    Type parameters for functions and types

类型参数,可以用于泛型函数以及泛型类型

    Type sets defined by interfaces

Go 1.18之前,interface用来定义方法集( a set of methods)。

Go 1.18开始,还可以使用interface来定义类型集(a set of types),作为类型参数的Type constraint(类型限制)

| 和 ~
|: 表示取并集。比如下例的Number这个interface可以作为类型限制,用于限定类型参数必须是int,int32和int64这3种类型。

~T表示底层类型是T的所有类型

    Type inference

类型推导,可以帮助我们在写代码的时候不用传递类型实参,由编译器自行推导。

注意:类型推导并不是永远都可行。

在上文后,调用泛型方法,需要

pt[int](1)

当然中括号也可以不写,编译器会进行类型推导

与其他语言泛型相比

c++ : 编译时生成每种类型的方法,缺点编译慢,需要后端消除无用代码
java: 类型擦除,所有类型都转换成Object,取值再做一次拆箱,缺点运行慢

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5719187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存