0
点赞
收藏
分享

微信扫一扫

Golang泛型

Golang 泛型

前言

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

泛型新功能

  1. Type parameters for functions and types

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

在这里插入图片描述

  1. 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的所有类型
在这里插入图片描述

  1. Type inference

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

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

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

pt[int](1)

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

与其他语言泛型相比

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

举报

相关推荐

0 条评论