免费发布信息
微信公众号

如何在 Go 泛型中传递类型参数给函数?

   来源:黔优网责任编辑:优优  时间:2024-09-20 22:16:27 浏览量:0

在 go 泛型中,通过在函数签名中使用尖括号 来传递类型参数,例如:func myfunc[t any](arg t) {}。调用时,指定具体的类型参数值作为实参,如:myfunc[int](10)。泛型可以使代码更加通用,支持任何类型参数值,如根据类型格式化值的函数 formatvalue[t any](value t),可用于各种类型,如整数、浮点数、字符串等。

如何在 Go 泛型中传递类型参数给函数?

在 Go 1.18 中引入泛型之后,我们可以传递类型参数给函数来实现更通用的代码。

语法

要将类型参数传递给函数,请使用尖括号 指定它们,如下所示:

func MyFunc[T any](arg T) {}

在此示例中,T 是一个类型参数,它可以表示任何类型。

实参

在调用带有类型参数的函数时,需要指定具体的类型参数值作为实参,如下所示:

MyFunc[int](10)

在该示例中,int 是传递给 MyFunc 的类型参数值。

实战案例

假设我们有一个根据给定值的类型来格式化它的函数:

func FormatValue(value interface{}) string {
    switch v := value.(type) {
    case int:
        return strconv.FormatInt(int64(v), 10)
    case float64:
        return strconv.FormatFloat(v, 'f', -1, 64)
    case string:
        return v
    default:
        return "Unknown value"
    }
}

使用泛型,我们可以重写此函数以支持任何类型:

func FormatValue[T any](value T) string {
    return strconv.Format(value)
}

现在,我们可以使用任何类型参数值来调用 FormatValue,如下所示:

fmt.Println(FormatValue[int](10)) // "10"
fmt.Println(FormatValue[float64](3.14)) // "3.14"
fmt.Println(FormatValue[string]("Hello, world!")) // "Hello, world!"

以上就是如何在 Go 泛型中传递类型参数给函数?的详细内容,更多请关注本网内其它相关文章!

 
 
 
没用 0举报 收藏 0
免责声明:
黔优网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优网官方立场,请读者仅做参考。本文标题:如何在 Go 泛型中传递类型参数给函数?,本文链接:https://www.qianu.com/help/45220.html,欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法信息,请您立即点此【投诉举报】并提供有效线索,也可以通过邮件(邮箱号:kefu@qianu.com)联系我们及时修正或删除。
 
 

 

 
推荐图文
推荐帮助中心
最新帮助中心