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

    文章

    4741

    浏览量

    68324
  • go语言
    +关注

    关注

    1

    文章

    158

    浏览量

    9025

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

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

收藏 人收藏

    评论

    相关推荐

    在学习go语言的过程踩过的坑

    作为一个5年的phper,这两年公司和个人都在顺应技术趋势,新项目慢慢从php转向了go语言,从2021年到现在,笔者手上也先后开发了两个go项目。在学习go
    的头像 发表于 11-11 09:22 98次阅读

    go语言如何解决并发问题

    作为一个后端开发,日常工作接触最多的两门语言就是PHP和GO了。无可否认,PHP确实是最好的语言(手动狗头哈哈),写起来真的很舒爽,没有任何心智负担,字符串和整型压根就不用区分,开发
    的头像 发表于 10-23 13:38 105次阅读
    <b class='flag-5'>go</b><b class='flag-5'>语言</b>如何解决并发问题

    三十分钟入门基础Go Java小子版

    前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译
    的头像 发表于 08-12 14:32 669次阅读
    三十分钟入门基础<b class='flag-5'>Go</b> Java小子版

    ASML创始人离世!

    创始人之一,1987年至1990年期间担任首席执行官,当时ASML正在努力争取第一个客户。 退休后,Wim 仍是 ASML 和高科技行业的真正大使。他激励了许多后辈。我们感谢 Wim 对 ASML
    的头像 发表于 06-13 09:10 259次阅读

    请问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 332次阅读

    Go语言中的函数、方法与接口详解

    Go 没有类,不过可以为结构体类型定义方法。方法就是一类带特殊的接收者参数的函数。方法接收者它自己的参数列表内,位于 func 关键字和方法名之间。(非结构体类型也可以定义方法)
    的头像 发表于 04-23 16:21 743次阅读

    什么是pipeline?Go构建流数据pipeline的技术

    本文介绍了 Go 构建流数据pipeline的技术。 处理此类pipeline的故障很棘手,因为pipeline的每个阶段可能会阻止
    的头像 发表于 03-11 10:16 551次阅读

    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配置TM 软件中心用户指南

    电子发烧友网站提供《Go配置TM 软件中心用户指南.pdf》资料免费下载
    发表于 01-03 09:48 0次下载
    <b class='flag-5'>Go</b>配置TM 软件中心用户指南

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

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

    如何在Go给GORM模型添加枚举类型

    GORM是一个流行的Go ORM,它允许我们定义结构体来表示数据表,并提供一个接口来执行CRUD操作。枚举在编程是一个有用的特性,它允许我们定义一个变量可以取的固定值集。在这篇文章
    的头像 发表于 11-28 15:36 1297次阅读