知识分享之Golang——Golang1.18泛型的简单案例
知识分享之Golang——Golang1.18泛型的简单案例
背景
知识分享之Golang篇是我在⽇常使⽤Golang时学习到的各种各样的知识的记录,将其整理出来以⽂章的形式分享给⼤家,来进⾏共同学习。欢迎⼤家进⾏持续关注。
知识分享系列⽬前包含Java、Golang、Linux、Docker等等。
开发环境
系统:windows10
语⾔:Golang
golang版本:
内容
上⼀节我们分享了Go语⾔新版本1.18正式发布,其中我们⽐较关注的⼀个重⼤变化就是泛型的引⼊,本节我们就使⽤泛型进⾏编写⼀下⼩案例,安装1.18部分就不讲了,和之前版本⼤同⼩异,这个版本新增加了⼀个环境变量,可以参见官⽅⽂档说明。
以下是本节的案例代码:
func main() {
Test("string")
Test(123)
Test(float32(12))
Test(int64(321))
}
func Test[T any](str T) {
go语言开发环境搭建fmt.Println(str)
}
上⾯是⼀个简单的泛型使⽤案例,这⾥有⼀个关键点any类型,官⽅代码注释如下:
// any is an alias for interface{} and is equivalent to interface{} in all ways.
type any = interface{}
说⽩了它就是⼀个万能类型,等同于interface{}接⼝类型。其官⽅还提供了⼀个类型comparable
// comparable is an interface that is implemented by all comparable types
// (booleans, numbers, strings, pointers, channels, arrays of comparable types,
// structs whose fields are all comparable types).
// The comparable interface may only be used as a type parameter constraint,
// not as the type of a variable.
type comparable interface{ comparable }
这个类型当我们需要进⾏⼀些⽐较时就需要⽤到它了,当然这两个你都不使⽤,也可以定义⼀个⾃⼰的类型,然后在声明函数时T类型设定为我们私有的类型即可,代码如下:
type resultType interface {
int | int64 | string | float32 | float64
}
func main() {
Test("string")
Test(123)
Test(float32(12))
Test(int64(321))
}
func Test[T resultType](str T) {
fmt.Println(str)
}
好了本节我们就分享到这⾥,更多的使⽤⽅法后续我们再继续进⾏分享,请持续关注我,我将给⼤家带来更多的组件分享、知识分享、规范分享等⼲货内容。
本⽂声明:
88x31.png
本作品由 采⽤ 进⾏许可。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论