Golang中的函数类型与函数变量

可以使用type关键字来定义一个函数类型,语法格式如下:

1
type fun func(int,int) int

上面语句定义了一个fun函数类型,它是一种函数类型,这种函数接收两个int类型的参数并返回一个int类型的返回值。

下面定义两个这样结构的两个函数,一个求和,一个比大小:

1
2
3
4
5
6
7
8
9
10
11
func sum(a int,b int) int {
return a+b
}

func max(a int,b int) int {
if a>b{
return a
}else{
return b
}
}

下面定义一个fun函数类型,把summax赋值给它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import "fmt"

func sum(a int, b int) int {
return a + b
}

func max(a int, b int) int {
if a > b {
return a
} else {
return b
}
}

func main() {
type f1 func(int, int) int
var ff f1
ff = sum
s := ff(1, 2)
fmt.Printf("s: %v\n", s)
ff = max
m := ff(3, 4)
fmt.Printf("m: %v\n", m)
}

运行结果:

1
2
s: 3
m: 4