Go学习之旅之函数(3)|Go主题月

189 阅读1分钟

前文索引:juejin.cn/post/695690…

3. 函数类型

Go语言中函数也可以作为变量的类型,也就是说函数可以是参数的类型,也可以是返回值类型,利用%T可以打印出变量类型。

例子如下:

package main
import "fmt"

func add(x,y int) int{
	return x+y
}

func main(){
	n := add //声明一个add类型变量
	fmt.Printf("%T\n",n)//打印n的类型是一个拥有两个int类型参数,返回值也为int类型的函数
	fmt.Println(n(1,2)) //相当于调用add(1,2)
}

输出结果:

func(int, int) int
3

4. 匿名函数

匿名函数就是指没有名字的函数。在Go中,允许在使用函数时再定义函数,但函数内部定义的函数只能是匿名函数,否则报错。

但由于匿名函数没有函数名,只有函数体,通常需要将这个匿名函数作为一种参数类型赋值给函数类型的变量。

(1)匿名函数的定义

func(参数列表)(返回参数列表){
    函数体
}

匿名函数举例:

package main
import "fmt"

//匿名函数
var f1 = func(x,y int) int{
	return x+y
}

func main(){
	n := f1(1,2)
	fmt.Println(n)
}

输出结果:

3

(2)立即执行函数

当函数只需要调用一次时,可以在函数定义后直接传入参数。

举例如下:

package main
import "fmt"

//匿名函数
var f1 = func(x,y int) int{
	return x+y
}

func main(){
	n := f1(1,2)
	fmt.Println(n)

	func(x,y int){
		fmt.Println(x+y)
	}(1,5)//直接传入x,y的值
}

输出结果:

3
6