资讯专栏INFORMATION COLUMN

Go 1.17 发布,主要更新了工具链、运行时和库的实现

longmon / 2244人阅读

摘要:主要更新在工具链运行时和库的实现方面。类型的表达式现在可以被转换为数组指针类型。特别是,正确使用的现有程序仍然有效,而新程序在使用或时仍然必须遵循规则。请注意,从到数组指针的新转换是类型转换在运行时可能发生恐慌的第一种情况。

在 Go 1.16 发布六个月后,Go 1.17 终于发布。主要更新在工具链、运行时和库的实现方面。一如既往,该版本保持了 Go 1 的兼容性承诺,Go 语言官方称:期望几乎所有的Go程序都能像以前一样继续编译和运行。

Go 1.17包括对语言的三个小的增强。

  • 从 slice 到数组指针的转换[]T类型的表达式s现在可以被转换为数组指针类型*[N]T。如果a是这种转换的结果,那么在范围内的相应指数指的是相同的基础元素。&a[i] == &s[i]对于0 <= i < N。如果len(s)小于N,转换就会陷入困境。
  • unsafe.Add: unsafe.Add(ptr, len)ptr添加len,并返回更新的指针unsafe.Pointer(uintptr(ptr)+uintptr(len))
  • unsafe.Slice。对于类型为*T的表达式ptrunsafe.Slice(ptr, len)返回一个类型为[]T的片断,其底层数组从ptr开始,长度和容量为len

增加了包unsafe的增强功能,以简化编写符合unsafe.Pointer安全规则的代码,但这些规则没有改变。特别是,正确使用unsafe.Pointer的现有程序仍然有效,而新程序在使用unsafe.Addunsafe.Slice时仍然必须遵循规则。

请注意,从slice到数组指针的新转换是类型转换在运行时可能发生恐慌的第一种情况。假设类型转换永远不会恐慌的分析工具应该被更新以考虑这种可能性。

更多版本细节,请查看官方 Release Notes

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/118545.html

相关文章

  • Flutter教程(二) 解Dart语言

    摘要:注如果你想快速的了解以进行开发,中文网有一个语言的资源列表,按照顺序看一遍,相信你就可以直接上手了。最后一些资源资源教程,请访问中文网。 showImg(https://segmentfault.com/img/bV8xQf?w=1020&h=800); 在上一篇教程中说了Flutter使用Dart语言开发。本篇教程整体介绍一下Dart语言,注意,本篇不会介绍Dart具体语法细节,也不...

    Little_XM 评论0 收藏0
  • gRPC遇见.NET SDK和Visual Studio:构建时自动生成编码

    摘要:集成工具在调用代码生成器之前,定位编译器和插件,标准导入和跟踪依赖关系,以便生成的源文件永远不会过时,同时将重新生成保持在最低要求。这是有道理的,因为程序包只包含编译器代码生成器和导入文件,这些在文件编译的项目之外是不需要的。 作者:KirillkkmKatsnelson 作为微软向其跨平台.NET产品发展的一部分,他们大大简化了项目文件格式,并允许第三方代码生成器与.NET项目的紧密...

    Rocture 评论0 收藏0
  • PHP回顾之Composer

    摘要:本文简要回顾相关概念和用法。相比之下已是明日黄花。分别对应的命令是根据关键字查找依赖包,例如查找本人发布的包。作为目前包依赖管理的最佳工具,值得每一位开发人员掌握。 转载请注明文章出处:https://tlanyan.me/php-review... PHP回顾系列目录 PHP基础 web请求 cookie web响应 session 数据库操作 加解密 Composer是PHP...

    Ocean 评论0 收藏0
  • Hyperledger Fabric(入门)

    摘要:脚本列出了在结束时安装的映像。在不同的体系结构,将用标识体系结构的字符串替换。提供了许多来支持各种编程语言,官方发布了两款针对和的和文档。。 入门 在我们开始之前,如果你还没有这样做,你可能希望检查是否已经在开发区块链应用程序和/或运行Hyperledger Fabric的平台上安装了所有前提条件。 一旦安装了前提条件,就可以下载并安装HyperLedger Fabric了,当我们在F...

    SKYZACK 评论0 收藏0
  • 重拾golang - go目录结构说明

    摘要:目录结构说明集多编程范式之大成者,使开发者能够快速的开发测试部署程序,支持全平台静态编译。上目录位置主要目录包含如下图,分别进行说明文件夹存放检查器的辅助文件。工作区有个子目录目录目录和目录。目录用于以代码包的形式组织并保存源码文件。 go 目录结构说明   golang集多编程范式之大成者,使开发者能够快速的开发、测试、部署程序,支持全平台静态编译。go具有优秀的依赖管理,高效的运行...

    zhisheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<