知识分享之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 国际许可协议 进行许可。

目录
相关文章
|
7月前
|
Go
【Golang】使用泛型对数组进行去重
【2月更文挑战第11天】使用泛型对数组进行去重
75 0
|
存储 安全 Java
Golang泛型详细介绍
Golang泛型详细介绍
|
Go Python 容器
因势而变,因时而动,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang泛型(generic)的使用EP15
事实上,泛型才是Go lang1.18最具特色的所在,但为什么我们一定要拖到后面才去探讨泛型?类比的话,我们可以想象一下给小学一年级的学生讲王勃的千古名篇《滕王阁序》,小学生有多大的概率可以理解作者的青云之志以及壮志难酬的愤懑心情?恐怕很难罢,是的,如果对Go lang的强类型语法没有一段时间的体验期,就很难理解泛型这种“反”静态语言概念。
因势而变,因时而动,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang泛型(generic)的使用EP15
|
Java Linux Go
知识分享之Golang——Golang1.18泛型的简单案例
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
102 0
知识分享之Golang——Golang1.18泛型的简单案例
|
编译器 Go
Golang泛型语法
在定义函数(结构等)时候,可能会有多种类型传入。只有在真正使用才知道是什么类型,此时就可以用一个更加宽泛的类型(必须存在一定约束,只能在那些类型的范围内使用)暂时占位。这个类型就叫泛型
841 0
|
安全 Java Go
Golang出现泛型后,Gin怎么封装网络请求处理
Go 1.18后出现泛型,小白怎么使用Gin框架怎么根据泛型封装客户端请求,
564 0
|
3月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
140 4
Golang语言之管道channel快速入门篇
|
3月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
71 4
Golang语言文件操作快速入门篇
|
3月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
112 3
Golang语言之gRPC程序设计示例