golang中可以使用可变化的参数来声明函数,比如求一列数中的最大值或者是最小值,传入的参数个数是不固定的,这时就需要使用到可变参数。
可变参数的声明形式如下:
func function(param ...type) type { }具体到本文讲解的求最大值函数max和求最小值函数min的声明会如下形式:
func min(num ...int) int { //求最大值 //具体实现 } func max(num ...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)) }