资讯专栏INFORMATION COLUMN

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

longmon / 2379人阅读

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

在 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

相关文章

  • 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元查看
<