Go 1.21 新增内置函数:min、max、clear

2023-10-19 17:09:02 浏览数 (1)

max 函数

代码语言:javascript复制
// The max built-in function returns the largest value of a fixed number of
// arguments of [cmp.Ordered] types. There must be at least one argument.
// If T is a floating-point type and any of the arguments are NaNs,
// max will return NaN.
func max[T cmp.Ordered](x T, y ...T) T

内置函数 max 返回固定数量的 [cmp.Ordered] 类型参数中的最大值。该接口要求至少提供有一个参数。如果 T 是浮点类型,或有任意一个参数是 NaN,那max 将返回 NaN

使用示例:

代码语言:javascript复制
package main

import "fmt"

func main() {
    a, b, c := 2, 7, 3
    maxV := max(a, b, c)
    fmt.Println(maxV) // 7

    d, e, f := 2.0, 4.3, 5.2
    maxF := max(d, e, f)
    fmt.Println(maxF) // 5.2

    g, h, i := "aaa", "abc", "abd"
    maxS := max(g, h, i)
    fmt.Println(maxS) // abd
}

min 函数

代码语言:javascript复制
// The min built-in function returns the smallest value of a fixed number of
// arguments of [cmp.Ordered] types. There must be at least one argument.
// If T is a floating-point type and any of the arguments are NaNs,
// min will return NaN.
func min[T cmp.Ordered](x T, y ...T) T

内置函数 min 返回固定数量的 [cmp.Ordered] 类型参数中的最小值。该接口要求至少提供有一个参数。如果 T 是浮点类型,或有任意一个参数是 NaN,那min 将返回 NaN

使用示例:

代码语言:javascript复制
package main

import "fmt"

func main() {
    a, b, c := 2, 7, 3
    maxV := min(a, b, c)
    fmt.Println(maxV) // 2

    d, e, f := 2.1, 4.3, 5.2
    maxF := min(d, e, f)
    fmt.Println(maxF) // 2.1

    g, h, i := "aaa", "abc", "abd"
    maxS := min(g, h, i)
    fmt.Println(maxS) // aaa
}

clear 函数

代码语言:javascript复制
// The clear built-in function clears maps and slices.
// For maps, clear deletes all entries, resulting in an empty map.
// For slices, clear sets all elements up to the length of the slice
// to the zero value of the respective element type. If the argument
// type is a type parameter, the type parameter's type set must
// contain only map or slice types, and clear performs the operation
// implied by the type argument.
func clear[T ~[]Type | ~map[Type]Type1](t T)

内置函数 clear 用于清空映射和切片:

•对于 mapsclear 删除所有元素,返回一个空map。•对于 slicesclear 将切片长度内的所有元素设置为各自元素类型的零值。•如果参数类型是类型参数,类型参数的类型集必须只包含mapslice类型。

使用示例:

代码语言:javascript复制
package main

import "fmt"

func main() {
    a := []int{1, 3, 4, 6}
    clear(a)
    fmt.Printf("len(a): %d t elem: %vn", len(a), a) // len(a): 4      elem: [0 0 0 0]

    b := []string{"aaa", "bbb", "ccc"}
    clear(b)
    fmt.Printf("len(b): %d t elem: %vn", len(b), b) // len(b): 3      elem: [  ]

    c := map[string]interface{}{"name": "孟斯特", "age": 30}
    clear(c)
    fmt.Printf("len(c): %d t elem: %vn", len(c), c) // len(c): 0      elem: map[]
}

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)[1]进行许可,使用时请注明出处。 Author: mengbin[2] blog: mengbin[3] Github: mengbin92[4] cnblogs: 恋水无意[5]


References

[1] 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [2] mengbin: mengbin1992@outlook.com [3] mengbin: https://mengbin.top [4] mengbin92: https://mengbin92.github.io/ [5] 恋水无意: https://www.cnblogs.com/lianshuiwuyi/

0 人点赞