11.3 泛型函数

如果函数声明指定了类型参数,则函数名表示范型函数。通用函数定义了一组由类型参数化的函数(或函数模板),在使用时必须对它们进行实例化。

函数的类型参数出现在函数参数之前的方括号内。所有类型参数都需要范型类型约束。

func min[T constraints.Ordered](x, y T) T // 类型参数 T 受 Ordered 接口的约束
{
    if x < y {                            // 在此条件表达式中,只有 Ordered 类型集中的 x 和 y 值可用于比较
        return x
    }
    return y
}

min 函数可以按如下方式使用,例如:

m := min[int](1, 10)

在这个特殊的例子中,参数是未类型化的整数字面量,因此可以省略类型参数,例如 min(1, 10)。T 将被假定为 int。m 的类型也将为 int(因为 min 返回类型 T 的值)。这被称为类型参数推断。

最后更新于