首页 > 后端开发 > Golang > 如何在 Go 中编写数值类型的泛型函数?

如何在 Go 中编写数值类型的泛型函数?

Barbara Streisand
发布: 2024-12-18 00:00:14
原创
654 人浏览过

How to Write a Generic Function for Numerical Types in Go?

如何在 Go 中为数值类型创建泛型函数

作为 JavaScript 和 TypeScript 用户,您可能想知道如何在 Go 中处理数值类型使用 int 和 float 时。本文探讨了创建可以接受任何数值参数的泛型函数的最佳方法。

Go 1.18 及以上版本中的泛型函数

随着类型参数的引入Go 1.18,您现在可以定义以类型 T 参数化的函数。利用接口约束,您可以将 T 限制为数字

func add[T Number](a, b T) T {
    return a + b
}
登录后复制

这里,约束 Number 是使用 golang.org/x/exp/constraints 包定义的:

type Number interface {
    constraints.Integer | constraints.Float
}
登录后复制

这个约束确保 T 必须是一个类型满足constraints.Integer或constraints.Float。

使用泛型函数

这个通用的 add 函数可以处理任何数字类型的参数。但是,请务必注意,两个参数必须属于同一类型。例如:

fmt.Println(add(1, 2))     // 3
fmt.Println(add(a, b))     // 3
fmt.Println(add(1.5, 3.2)) // 4.7
登录后复制

尝试混合类型,例如 add(2.5, 2),将导致编译错误。

复数支持

您可以扩展数字约束以包括复杂的types:

type Number interface {
    constraints.Integer | constraints.Float | constraints.Complex
}
登录后复制

尽管复杂类型支持,算术运算符、-、* 和 / 仍然是唯一受支持的运算符。复杂类型不支持模 % 和按位运算符。

以上是如何在 Go 中编写数值类型的泛型函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板