package main import"fmt" funcmain() { x := min(1, 3, 2, 0) fmt.Printf("The minimum is: %d\n", x) slice := []int{7,9,3,5,1} x = min(slice...) fmt.Printf("The minimum in the slice is: %d", x) } funcmin(s ...int)int { iflen(s)==0 { return0 } min := s[0] for _, v := range s { if v < min { min = v } } return min }
变长参数的类型不相同
使用结构体
使用空接口
使用默认的空接口 interface{},这样就可以接受任何类型的参数
new 和 make 均是用于分配内存:new 用于值类型和用户定义的类型,如自定义结构,make 用于内置引用类型(切片、map 和管道)。
funcadd()func(i int)int { var x int fmt.Printf("x: %v\n", x) returnfunc(i int)int { x += i return x } } funcmain() { f := add() fmt.Printf("f(1): %v\n", f(1)) fmt.Printf("f(2): %v\n", f(20))
}
闭包函数保存并积累其中的变量的值,不管外部函数退出与否,它都能够继续操作外部函数中的局部变量。
计算函数的执行时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
package main
import ( "fmt" "time" )
funcadd() { for i := 0; i < 100; i++ { fmt.Printf("i: %v\n", i) } }