前言
本周Go官方重磅发布了Go 1.18 beta 1版本,正式支持泛型。作为Go语言诞生12年以来最大的功能变革,官方配套推出了一个非常细致的Go泛型入门基础教程,通俗易懂。
本人对Go官方教程在翻译的基础上做了一些表述上的优化,以飨读者。
教程内容
这个教程主要介绍Go泛型的基础知识。通过泛型,你可以声明和使用泛型函数,在调用函数的时候,允许使用不同类型的参数作为函数实参。
在这个教程里,我们先声明2个简单的非泛型函数,然后在一个泛型函数里实现这2个函数的逻辑。
接下来通过以下几个部分来进行讲解:
-
为你的代码创建一个目录
-
实现非泛型函数
-
实现一个泛型函数来处理不同类型
-
调用泛型函数的时候移除类型实参
-
声明类型限制(type constraint)
注意:关于Go的其它教程,大家可以参考Tutorials - go.dev。
注意:大家可以使用Go playground的Go dev branch模式来编写和运行你的泛型代码,地址Go Playground - go.dev。
准备工作
-
安装Go 1.18 Beta 1或者更新的版本。安装指引可以参考下面的介绍。
-
有一个代码编辑工具。任何文本编辑器都可以。
-
有一个命令行终端。Go可以运行在Linux,Mac上的任何命令行终端,也可以运行在Windows的PowerShell或者cmd之上。
安装和使用beta版本
这个教程需要使用Go 1.18 Beta 1版本了的泛型功能。使用如下步骤,安装beta版本
-
使用下面的命令安装beta版本
$ go install golang.org/dl/go1.18beta1@latest
-
运行如下命令来下载更新
$ go1.18beta1 download
-
使用beta版本的go命令,不要去使用release版本的go命令
你可以通过直接使用
go1.18beta1
命令或者给go1.18beta1
起一个简单的别名-
直接使用
go1.18beta1
命令$ go1.18beta1 version
-
给
go1.18beta1
命令起一个别名$ alias go=go1.18beta1 $ go version
下面的教程都假设你已经把
go1.18beta1
命令设置了别名go
。 -
为你的代码创建一个目录
首先创建一个目录用于存放你写的代码。
-
打开一个命令行终端,切换到你的
home
目录-
在Linux或者Mac上执行如下命令(Linux或者Mac上只需要执行
cd
就可以进入到home
目录)cd
-
在Windows上执行如下命令
C:\> cd %HOMEPATH%
-
-
在命令行终端,创建一个名为
generics
的目录$ mkdir generics $ cd generics
-
创建一个go module
运行
go mod init
命令,来给你的项目设置module路径$ go mod init example/generics
注意:对于生产代码,你可以根据项目实际情况来指定module路径,如果想了解更多,可以参考Managing dependencies - go.dev。
接下来,我们来使用map写一些简单的代码。