知识分享之Golang——Golang1.18泛型的简单案例

简介: 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。知识分享系列目前包含Java、Golang、Linux、Docker等等。

知识分享之Golang——Golang1.18泛型的简单案例

背景

知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。

知识分享系列目前包含Java、Golang、Linux、Docker等等。

开发环境

  • 系统:windows10
  • 语言:Golang
  • golang版本:1.18

内容

上一节我们分享了Go语言新版本1.18正式发布,其中我们比较关注的一个重大变化就是泛型的引入,本节我们就使用泛型进行编写一下小案例,安装1.18部分就不讲了,和之前版本大同小异,这个版本新增加了一个环境变量,可以参见官方文档说明。
以下是本节的案例代码:

func main() {
    Test("string")
    Test(123)
    Test(float32(12))
    Test(int64(321))
}

func Test[T any](str T) {
    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)
}

好了本节我们就分享到这里,更多的使用方法后续我们再继续进行分享,请持续关注我,我将给大家带来更多的组件分享、知识分享、规范分享等干货内容。

本文声明:

5330898-d1c72b6c90e378f3.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

目录
相关文章
Golang反射---结构体的操作案例大全
Golang反射---结构体的操作案例大全
73 0
|
2月前
|
Go
Golang生成随机数案例实战
关于如何使用Go语言生成随机数的三个案例教程。
197 91
Golang生成随机数案例实战
|
2月前
|
Go
Golang的time.NewTimer单次定时器使用案例
这篇文章介绍了Go语言中time包的多种定时器使用案例,包括单次定时器的创建、阻塞程序运行的Sleep函数、重置和停止定时器的方法,以及After和AfterFunc函数的使用。
44 5
Golang的time.NewTimer单次定时器使用案例
|
2月前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
51 3
Golang语言之Prometheus的日志模块使用案例
|
2月前
|
Go
Golang语言基本数据类型默认值及字符串之间互相转换案例
这篇文章讲解了Golang语言中基本数据类型的默认值、类型转换的概述以及整型、浮点型、字符串之间的相互转换案例,包括如何将基本数据类型转换为字符串类型和字符串类型转换为基本数据类型,以及字符串与字节切片之间的转换。
18 2
|
2月前
|
Go
Golang语言数据类型分类及进制转换案例
这篇文章详细介绍了Go语言中数据类型的分类、进制转换的概念和实例,以及数字字面量语法,还涉及了原码、反码和补码的相关知识。
18 0
Golang语言数据类型分类及进制转换案例
|
2月前
|
Go
Golang的time.NewTicker周期性定时器使用案例
这篇文章介绍了Golang中time包的NewTicker函数如何创建周期性定时器,并通过两个示例展示了如何使用定时器以及如何停止定时器。
61 1
|
6月前
|
存储 网络协议 Go
Golang网络聊天室案例
Golang网络聊天室案例
68 2
Golang网络聊天室案例
|
6月前
|
Go
【Golang】使用泛型对数组进行去重
【2月更文挑战第11天】使用泛型对数组进行去重
70 0
|
12月前
|
存储 安全 Java