一、函数
1.函数的定义
//方式1:有参数有返回值
func f1(a int, b int) (ret int) {
return a + b
}
//方式2:有参数无返回值
func f2(a int, b int) {
fmt.Println("...")
}
//方式3:无参数有返回值
func f3() (ret int) {
return 1
}
//方式4:无参数无返回值
func f4() {
fmt.Println("...")
}
//方式5:多个返回值
func f5() (int, string) {
return 1, "beijing"
}
//方式6:可变长参数
func f6(x string, y ...int) {
fmt.Println(y) //y是int类型的切片
}
2.函数指针
func para_input(int, int) int {
fmt.Println("作为输入参数")
return 0
}
func para_ret() {
fmt.Println("作为返回参数")
}
func call(x func(int, int) int) (y func()) {
fmt.Println("这是个调用函数")
x(1, 2)
return para_ret
}
func main() {
v := call(para_input)
v()
fmt.Printf("v的类型是:%T\n", v)
}
执行结果
这是个调用函数
作为输入参数
作为返回参数
v的类型是:func()
3.匿名函数
注意:只能在函数内部使用
//方法1:匿名函数
f := func(int, int) int {
fmt.Println("这是一个匿名函数")
return 0
}
f(1, 2)
//方法2:匿名函数
func(int, int) int {
fmt.Println("这是一个匿名函数")
return 0
}(1, 2)
二、关键字defer
1.把它后边的语句延迟到函数即将退出返回的时候执行
2.多个defer语句按照从后往前的顺序执行
3.go语言return执行分为赋值和返回两个步骤,defer语句在两个步骤中间执行
defer fmt.Println("hello")
defer fmt.Println("world")