卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章48500本站已运行31116

golang函数的泛型

golang函数的泛型

Go 语言中的函数泛型

泛型函数允许您为各种类型定义通用函数,从而提高代码的可重用性和灵活性。

语法

泛型函数的语法如下:

func <函数名>[T any](<参数列表>) <返回值类型> {
    // 函数体
}

其中:

  • <函数名> 是泛型函数的名称。
  • 表示函数接受的类型参数,any 关键字指示类型未知。
  • <参数列表> 是函数所需的参数。
  • <返回值类型> 是函数返回的类型。

实战案例

我们创建一个比较两个值并返回较大值的泛型函数:

func Max[T comparable](a, b T) T {
    if a > b {
        return a
    }
    return b
}

我们可以使用此函数比较任何可比较类型的两个值:

maxInt := Max(10, 20) // int
maxString := Max("hello", "world") // string

约束

您可以使用类型约束来限制函数可以接受的类型。例如,您可以要求类型必须可比较或实现特定接口:

func MaxComparable[T comparable](a, b T) T
func MaxWithInterface[T any](a, b T) T where T interface{ CompareTo(T) int }

注意

  • 泛型与反射使用相同的元信息机制,如果过度使用可能会降低性能。
  • 泛型类型实例化会产生新的类型,这可能会增加内存开销。

结论

Go 语言中的函数泛型提供了强大的工具,可用于编写通用且可重用的代码。通过使用类型参数和类型约束,您可以创建适应多种情况的函数。

卓越飞翔博客
上一篇: golang函数的反射
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏