Go 中的泛型函数
在 Go 中,泛型函数的概念通过使用空接口来实现。空接口由于不需要任何额外的方法实现,因此能够保存任何类型的值。这就引出了这样的问题:这是否是 Go 实现泛型函数的方法,或者是否存在更合适的替代方案。
从 Go 1.18 开始,引入了一种更现代、更明确的定义泛型函数的方法。它利用类型参数来指定函数可以操作的类型。例如,考虑以下泛型函数 Print:
package main import ( "fmt" ) // T can be any type func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } func main() { // Passing list of string works Print([]string{"Hello, ", "world\n"}) // You can pass a list of int to the same function as well Print([]int{1, 2}) }
Output:
Hello, world 12
此方法提供了更清晰、更明确的泛型函数声明,使其更易于理解和维护代码库。
以上是Go 是否对泛型函数使用空接口或类型参数?的详细内容。更多信息请关注PHP中文网其他相关文章!