go 函数也是一种类型, 匿名函数
/* 函数也是一种类型 */
package main
import (
"fmt"
)
/* 自定义函数类型 接受两个int参数,返回int类型*/
type op_func func(int, int) int
func main() {
test_func()
}
func test_func() {
/* 声明变量c 类型为自定义类型 */
var c op_func
/* add函数赋值给c add函数接受两个int参数,返回int类型 */
c = add
sum := c(100, 103)
fmt.Println(sum)
/* 调用自定义函数,传递c变量 */
sum = op(c, 100, 130)
fmt.Println(sum)
/* 调用自定义函数,传递sub函数 */
sum = op(sub, 200, 100)
fmt.Println(sum)
// sum = op(sub1, 100, 200) //编译报错,sub1函数接受三个参数,不符合自定义类型
/* 声明并调用匿名函数 */
result := func(a, b int) int {
return a + b
}(100, 200)
fmt.Println("匿名函数100+200=", result)
}
func add(a, b int) int {
return a + b
}
func sub(a int, b int) int {
return a - b
}
func sub1(a, b, c int) int {
return c - b - a
}
/* 自定义op函数,接受自定义类型参数 两个int类型 */
func op(op op_func, a, b int) int {
return op(a, b)
}
输出:
203
230
100
匿名函数100+200= 300
写入自己的博客中才能记得长久