golang 泛型的格式写法

 

Go语言中的泛型(Generics)是在 Go 1.18 版本中引入的一个重要特性,它允许你编写可重用的代码,而不需要为每种数据类型重复编写相同的逻辑。

泛型通过参数化类型(type parameters)来实现,使得函数、方法、接口和结构体可以与多种类型一起工作。

下面详细介绍Go语言中泛型的基本格式和用法:

 

泛型函数的基本格式如下:

func functionName[TypeParameters constraints](arguments) returnType {
    // 函数体
}

  functionName: 是泛型函数的名字。

  TypeParameters: 是类型参数列表,放在函数名后的方括号中,用逗号分隔多个类型参数。每个类型参数代表一个待定的类型。

  constraints: 是类型约束,可选,用来限制类型参数可以被哪些具体类型实例化。它可以是一个预定义的约束如any(表示可以是任何类型),或者是自定义的接口约束。

  arguments: 是函数的参数列表,与非泛型函数相同。

  returnType: 是函数的返回类型,同样可以是泛型类型。

 

类型约束用来限制类型参数可以被哪些类型实例化。

你可以使用预定义的约束,如 any(等同于空接口interface{},可以匹配任何类型),或者定义自己的接口约束。

自定义类型约束的示例:

type MyConstraint interface {
    // 这里列出约束条件,比如必须实现的方法
    SomeMethod()
}

func MyFunction[T MyConstraint](t T) {
    // 函数体
}

 

【实例】

假设我们要编写一个泛型的 Max 函数,它可以接受两种类型的参数并返回较大的那个:

https://github.com/farwish/go-lab/blob/master/syntax/T.go

在这个例子中,comparable 是一个预定义的约束,表示这个类型参数需要是一个可以比较的类型,比如基本的数值类型、字符串等。

 

Link:https://www.cnblogs.com/farwish/p/18242833

posted on   ercom  阅读(55)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
历史上的今天:
2023-06-11 [GPT] Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
2023-06-11 [GPT] ./ssh/known_hosts 是什么
2023-06-11 [GPT] jquery chosen插件选择的多个元素是逗号分隔的,怎么设置成其它分隔符号 ?
2023-06-11 [GPT] js 外部参数怎么传给 setTimeout 的匿名函数 ?
2023-06-11 [GPT] 监测输入框被 js 设置了值 ?input 输入框被设置了 value 值,但是没有触发 change 事件?
2023-06-11 [GPT] php 报错 Unsupported operand types
2020-06-11 [FE] WebStorm, ESLint: Trailing spaces not allowed
点击右上角即可分享
微信分享提示