golang中可变参数的使用:求最大值和最小值

    xiaoxiao2022-06-30  146

    golang中可以使用可变化的参数来声明函数,比如求一列数中的最大值或者是最小值,传入的参数个数是不固定的,这时就需要使用到可变参数。

    一:可变参数的声明形式

    可变参数的声明形式如下:

    func function(param ...type) type { }

    具体到本文讲解的求最大值函数max和求最小值函数min的声明会如下形式:

    func min(num ...int) int { //求最大值 //具体实现 } func max(num ...int) int { //求最小值 //具体实现 }

    二:构造int型最大值和最小值

    在求最大值和最小值的具体实现中,我们肯定会需要用到一个初始的值来进行记录。 如求最大值的逻辑如下:

    max = INT_MIN if a > min max = a return max

    那么INT_MIN的值一定是需要时int类型的最小值,那么如何构造INT_MIN

    const MAX = int(^uint(0) >> 1) //构造0111111111.... 9223372036854775807 const MIN = int(^MAX) //构造10000000... -9223372036854775808

    三:具体实现

    具体的求最大值和最小值的函数定义如下:

    package main import "fmt" const MAX = int(^uint(0) >> 1) const MIN = int(^MAX) func min(a ...int) int { fmt.Println(MAX) m := MAX for _, i := range a { if i < m { m = i } } return m } func max(a ...int) int { fmt.Println(MIN) m := MIN for _, i := range a { if i > m { m = i } } return m } func main() { fmt.Println("max = ", max(1,2,3,4,5)) fmt.Println("min = ", min(1,2,3,4,5)) }

    最新回复(0)