0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Go语言创始人反对在Go 1.18的标准库中引入泛型支持

马哥Linux运维 来源:SegmentFault思否社区 作者:SegmentFault 2021-10-26 09:45 次阅读

近日,Go 语言创始人之一 Rob Pike 在 Github 上发表评论引发关注。据悉,他已在 Go 代码仓库提交了一个 issue (#48918),反对在 Go 1.18 的标准库中引入泛型支持,建议不要改动 Go 1.18 中的标准库。

Rob 提出以上建议主要有两个依据:

其一,是因为改动范围过大,可能会出现差错。Rob 表示,Go 语言 1.18 版本很可能包括自创建以来对语言的最大变化——参数多态性,俗称泛型。

尽管语言的变化已经以某种形式进行了十多年,但是库的变化是非常新的,且暂时没有设计使用新类型的经验和依据。当然,多年来 Go 语言团队已经对此做了很多工作。

关于核心库将如何适应等议题,目前也已经有很多讨论(例如请参见#45955和#48594,还有其他的,而且肯定会很快出现。)

其二,是缺乏实战经验。Rob 指出,如何在标准库中使用这些泛型是需要深思熟虑计划的。如果现在将它们放入库中,会给发布增加了很大的负担。

可以在生产中进行测试,在一两个周期内进行更改、调整和发展,让整个社区试用,只有通过测试,才会将它们转移到主回购协议中进入主仓库。也就是说,有了一、两个版本的实际使用,且积累了足够的经验之后,再考虑更新标准库也不迟。

另外,由于泛型的兼容性承诺使得任何细节出错的成本相当高,Rob 团队先等待、观察和学习。

7a131dce-3581-11ec-82a8-dac502259ad0.png

因此,Rob 建议暂时不要在 Go 1.18 修改标准库。可以继续为切片、贴图、通道等设计、构建、测试和使用新的库,先在 golang.org/x 或 golang.org/exp 提供相关库的泛型版本。

最后,Rob 忠告称:“我意识到每个人都想从新的语言功能中获得乐趣,并期待着解决核心库中的一些问题,这些问题一旦出现就会变得不那么笨拙,但我坚信,现在最好放慢速度。谨慎使用、学习、学习和行动。”

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4596

    浏览量

    67327
  • go语言
    +关注

    关注

    1

    文章

    156

    浏览量

    8957

原文标题:Go 语言创始人反对在 Go 1.18 标准库中引入泛型支持

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问STVP+COSMIC环境下的go to definition怎么用?

    STVP+COSMIC环境下的go to definition怎么用? 我现在go to definition一个宏定义的时候有效果,但是函数什么的没用,是怎么回事呢,是不是工程里面没有设置好,求大家帮帮忙?
    发表于 05-11 06:11

    关于go中接口类型的表示方法

    go是一个静态性语言,每个变量都有静态的类型,因此每个变量在编译阶段中有明确的变量类型,比如像:int、float32、MyType。
    的头像 发表于 04-28 10:13 157次阅读

    CYT4BF从Deepsleep转换到Active时,POWER_DRILL2GO的稳定时间是多少?

    我想知道 CYT4BF 从 DeepSleep 转换到 Active 时核心POWER_DRILL2GO稳定时间。 我根据数据表的时钟检查了POWER_DRILL2GO模式转换时间
    发表于 03-06 07:58

    Arduino IDE是否有与Xmc2Go兼容的LoRaWAN

    到 TTN。 我尝试了几个,看看它们是否可能与Xmc2Go兼容,但是无济于事。 以下我的测试不起作用: -Beelan-Lorawa
    发表于 02-27 06:05

    MiniProg4POWER_DRILL2GO周期后失去与PC的连接的原因?

    再次检索它。 发生这种情况时,编程器甚至没有显示 CYPRESS™ 编程器,并且插拔编程器也无济于事。 我的 Python 代码,我
    发表于 01-19 07:55

    使用go语言实现一个grpc拦截器

    在开发grpc服务时,我们经常会遇到一些通用的需求,比如:日志、链路追踪、鉴权等。这些需求可以通过grpc拦截器来实现。本文使用go语言来实现一个 grpc一元模式(Unary)拦截器,上报链路追踪信息。
    的头像 发表于 12-18 10:13 338次阅读
    使用<b class='flag-5'>go</b><b class='flag-5'>语言</b>实现一个grpc拦截器

    Go编程语言-你应该知道的一切

    Go 编程语言的故事始于 Google,当时三位工程师 Robert Griesemer、Rob Pike 和 Ken Thompson 对 C++ 的复杂性以及缺乏提供高效编译和执行的简单语言感到厌倦。
    的头像 发表于 12-11 17:37 397次阅读

    Go语言比Python强多少

    1.都说Go语言性能非常强大,那么到底比Python强多少? 为了比较Go语言和Python语言在单线程性能上的差距,我们可以做一个简单实验
    的头像 发表于 11-02 14:05 355次阅读
    <b class='flag-5'>Go</b><b class='flag-5'>语言</b>比Python强多少

    如何让Python和Go互相调度

    我们曾经研究过如何让Python和Go互相调度,当时发现,将Go语言写的模块打包成动态链接库,就能在Python中进行调度: 优劣互补! Python+Go结合开发的探讨
    的头像 发表于 11-02 11:24 336次阅读
    如何让Python和<b class='flag-5'>Go</b>互相调度

    Go在单线程计算性能上的优势

    ,将计算和保存的过程保存在本地的redis缓存中,然后使用Celery来调度这些任务。 问题在于,从这些网址中获取数据的步骤,写在Go Worker里是否合适?Go进行网络请求是否比Python更稳定、速度更快?今天我们就来简单地比较一下。 1.同步比较 首先,试试
    的头像 发表于 11-02 11:16 291次阅读
    <b class='flag-5'>Go</b>在单线程计算性能上的优势

    基于Go语言的反弹Shell命令生成工具简介

    RevShell 是一个基于Go语言的反弹Shell命令生成工具,旨在帮助安全研究人员和渗透测试人员在需要与目标主机建立反向连接时快速生成相应的Shell代码。
    发表于 08-25 09:45 517次阅读
    基于<b class='flag-5'>Go</b><b class='flag-5'>语言</b>的反弹Shell命令生成工具简介

    Go语言中的整数类型

    Go 语言中,整型可以细分成两个种类十个类型。
    发表于 07-20 15:25 413次阅读

    Go语言常量的声明

    Go 语言中, 常量 表示的是固定的值,常量表达式的值在编译期进行计算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的数据类型只可以是 布尔型 、 数字型 (整数型、浮点型和复数)
    发表于 07-20 15:24 309次阅读

    Go语言变量的命名和声明

    变量名 必须以一个 字母或下划线开头 ,后面可以跟任意数量的字母、数字或下划线,在 Go 语言中,变量名区分大小写字母。当然,上述的命名规则在命名 函数名 、 常量名 、 类型名 、 语句标号 和 包名 等都适用。
    发表于 07-19 18:23 543次阅读

    Go语言简介和安装方法

    Go 又称 Golang ,是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言Go 语言语法与
    发表于 07-19 16:33 446次阅读