Go1.21新增内置函数(built-in functions)详解
Go 1.21新增的内置函数分别是 min、max 和 clear,接下来看下这几个函数的用途和使用示例。
在编程过程中,需要知道一组值中的最大或最小值的场景是很常见的,比如排序、统计等场景。之前都需要自己写代码来实现这个功能,现在 Go 1.21引入了两个新的内置函数 min 和 max 来实现了这个功能。
min
函数定义如下:
func min[T cmp.Ordered](x T, y ...T) T
用于计算给定数量的有序类型数据中的的最小值,参数至少为一个。与操作符相同的类型规则适用:对于有序参数 x 和 y,如果 x + y 有效,则 min(x, y) 有效,并且 min(x, y) 的类型和 x + y 的类型也一样(对于 max 函数也是类似的)。如果所有参数都是常量,则结果也是常量。简单示例如下:
package main import "fmt" func main() { var x, y int = 1, 6 fmt.Println(min(y)) // 6 fmt.Println(min(x, y)) // 1 fmt.Println(min(0, x, y)) // 0 fmt.Println(min(x, y, 4.0)) // 1 fmt.Println(min("a", "b")) // a }
max
函数定义如下:
func max[T cmp.Ordered](x T, y ...T) T
用于计算给定数量的有序类型数据中的的最大值,参数至少为一个,其他特性和 min 类似。简单示例如下:
package main import "fmt" func main() { var x, y int = 1, 6 fmt.Println(max(y)) // 6 fmt.Println(max(x, y)) // 6 fmt.Println(max(0, x, y)) // 6 fmt.Println(max(x, y, 4.0)) // 6 fmt.Println(max("a", "b")) // b }
Clear
函数定义如下:
func clear[T ~[]Type | ~map[Type]Type1](t T)
作用是删除或清空所有元素。接受 map 和 slice类型的实参。当参数为 map 类型时,会删除 map 中所有元素,map 的长度变为 0,简单示例如下:
package main import "fmt" func main() { m := map[string]string{"foo": "bar", "foo2": "bar2"} clear(m) fmt.Println(len(m)) // 0 }
当参数为切片类型时,将切片中的所有元素设置为对应类型的零值,clear 前后切片的长度和容量都保持不变。
package main import "fmt" func main() { s1 := []int{1, 2, 3, 4} clear(s1) fmt.Println(s1) // [0 0 0 0] s2 := []string{"路多辛的博客", "路多辛的所思所想", "a", "b"} clear(s2) fmt.Println(s2) // [ ] }
如果传入的 map 或 slice 类型值为 nil,则不做任何操作。
到此这篇关于Go1.21新增内置函数(built-in functions)详解的文章就介绍到这了,更多相关Go内置函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Go 实现 WebSockets和什么是 WebSockets
这篇文章主要介绍了Go 实现 WebSockets和什么是 WebSockets,WebSockets 是构建实时应用程序的第一大解决方案,在线游戏、即时通讯、跟踪应用程序等,下文相关内容介绍需要的小伙伴可以参考一下2022-04-04基于go interface{}==nil 的几种坑及原理分析
这篇文章主要介绍了基于go interface{}==nil 的几种坑及原理分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-04-04Go+Vue开发一个线上外卖应用的流程(用户名密码和图形验证码)
这篇文章主要介绍了Go+Vue开发一个线上外卖应用(用户名密码和图形验证码),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11
最新评论