GO语言(十五):泛型入门(下)-

Python018

GO语言(十五):泛型入门(下)-,第1张

在本节中,您将添加通用函数调用的修改版本,进行小的更改以简化调用代码。您将删除在这种情况下不需要的类型参数

当 Go 编译器可以推断您要使用的类型时,您可以在调用代码中省略类型参数。编译器从函数参数的类型推断类型参数。

请注意,这并不总是可能的。例如,如果您需要调用没有参数的泛型函数,则需要在函数调用中包含类型参数。

在 main.go 中,在您已有的代码下方,粘贴以下代码。

在此代码中:

(1)调用泛型函数,省略类型参数。

从包含 main.go 的目录中的命令行,运行代码。

接下来,您将通过将整数和浮点数的并集捕获到您可以重用的类型约束(例如从其他代码中)来进一步简化函数。

正如您将在本节中看到的,约束接口也可以引用特定类型。

1、编写代码

在此代码中:

b.在您已有的函数下方,粘贴以下通用 SumNumbers函数。

在此代码中:

c.在 main.go 中,在您已有的代码下方,粘贴以下代码。

在此代码中:

(1)调用SumNumbers打印每个map的总和。

与上一节一样,在调用泛型函数时省略了类型参数(方括号中的类型名称)。Go 编译器可以从其他参数推断类型参数。

从包含 main.go 的目录中的命令行,运行代码。

做得很好!您刚刚学习了 Go 中的泛型。

“劣势”:go是带垃圾回收的编程语言,因此不管go的stop the world的时间有多么短,延迟有多么小,依然属于这类语言,这就天然与c,cpp,rust间划清了界线。虽然go初衷是成为系统级编程语言,虽然go的性能可以满足99%的场合的需要,但不能否认的是在一些性能超级敏感的场合,选择go依然要慎重。

go的另外一个“劣势”就是能玩的花样太少,崇尚一个事情只有一个或少数几种写法。这不符合某些开发人员炫技的心理需求。于是就被诟病为是资质平平的程序员才会去用的语言。

go 1.18将加入泛型(类型参数),这算是