知识分享之Golang——Golang1.18正式发布泛型到来

简介: 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。知识分享系列目前包含Java、Golang、Linux、Docker等等。

知识分享之Golang——Golang1.18正式发布泛型到来

背景

知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。

知识分享系列目前包含Java、Golang、Linux、Docker等等。

开发环境

  • 系统:windows10
  • 语言:Golang
  • golang版本:1.18

内容

3月15号经历了七个月,Go1.18版本发布了,这个版本是一个重要的阶段版本,我们最关注的泛型正式发布,同样的这个版本依旧向下兼容,因此我们可以在现有的版本上直接进行安装使用新版本。
以下是本次版本最明显的变化列表,参见官方发布说明

  • 函数和类型声明的语法现在接受类型参数。
  • 参数化的函数和类型可以通过在它们后面加上方括号中的类型参数列表来实例化。
  • 新的标记~被添加到操作符和标点符号集合中。
  • 接口类型的语法现在允许嵌入任意类型(不仅仅是接口的类型名)以及联合和~T类型元素。这样的接口只能用作类型约束。接口现在定义了一组类型和一组方法。
  • 新的预先声明的标识符any是空接口的别名。它可以用来代替接口{}。
  • 新的预先声明的标识符comparable是一个接口,它表示可以使用==或!=进行比较的所有类型的集合。它只能作为(或嵌入)类型约束使用。

泛型的一些限制可以查看以下机翻:

当前的泛型实现具有以下已知限制:

  • Go 编译器无法处理泛型函数或方法中的类型声明。我们希望在 Go 1.19 中提供对此功能的支持。
  • realGo 编译器不接受带有预先声明的函数、imag和 的参数类型的参数complex。我们希望在 Go 1.19 中取消这个限制。
  • 如果由的约束接口显式声明,Go 编译器仅支持对类型参数类型m的值 调用方法。类似地,方法值和方法表达式 也仅在由 显式声明时才受支持,即使由于所有类型都在implement 中可能位于方法集中。我们希望在 Go 1.19 中取消这个限制。 xPmPx.mP.mmPmPPm
  • Go 编译器不支持访问类型参数 type 的结构字段x.f ,x即使类型参数的类型集中的所有类型都有一个 field f。我们可能会在 Go 1.19 中删除此限制。
  • 不允许将类型参数或指向类型参数的指针作为未命名字段嵌入到结构类型中。同样,不允许在接口类型中嵌入类型参数。目前还不清楚这些是否会被允许。
  • 具有多个术语的联合元素可能不包含具有非空方法集的接口类型。目前还不清楚这是否会被允许。
  • 泛型也代表了 Go 生态系统的巨大变化。虽然我们更新了几个支持泛型的核心工具,但还有很多工作要做。剩余的工具、文档和库需要时间才能赶上这些语言变化。

以上是其官方机翻后的主要更新内容,下一节我们将进行编写一些案例进行使用泛型,并分析哪些场景下我们需要用到这一个特性。

本文声明:

5330898-d1c72b6c90e378f3.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

目录
相关文章
|
设计模式 架构师 大数据
我的架构师之路——阿里云 MVP 沈剑
沈剑,公众号“架构师之路”的作者,曾任百度高级工程师和58同城高级架构师、技术委员会主席、技术学院优秀讲师,现为到家集团技术委员会主席和技术VP,同时也是快狗打车(原58速运)的CTO。本文是沈剑老师在阿里云的直播中分享的一些自己关于架构师的看法和成为架构师的心路历程的第一部分。
6658 0
我的架构师之路——阿里云 MVP 沈剑
|
6月前
|
人工智能 自然语言处理 程序员
AI战略丨拓展智能边界,大模型体系全面升级
阿里云在基础模型体系和生态、模型工程化落地路径、端云协同解决方案等多维度上都在快速迭代。
|
10月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
1476 7
|
10月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
505 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到SQL语法错误,该如何排查
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
网络协议 安全 测试技术
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务
374 3
|
安全 Java 数据库
SpringSecurity实现多种登录方式,如邮件验证码、电话号码登录
SpringSecurity实现多种登录方式,如邮件验证码、电话号码登录
2604 2
|
jenkins 测试技术 持续交付
干货 | 一文搞定 pytest 自动化测试框架(一)
![](https://ceshiren.com/uploads/default/original/3X/4/3/439f9a297bb4fd49a0ef21be8a071720e2959ded.png) pytest 是一个成熟的全功能 Python 测试工具,可以帮助您编写更好的程序。它与 Python 自带的 Unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容
|
机器学习/深度学习 编解码 网络协议
创历届最好成绩!阿里云6篇论文入选顶会SIGCOMM2022
创历届最好成绩!阿里云6篇论文入选顶会SIGCOMM2022
402 0
|
消息中间件 Kafka
【Kafka】(二十)Kafka Consumer 重置 Offset
【Kafka】(二十)Kafka Consumer 重置 Offset
1126 0

热门文章

最新文章