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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值