函数作为参数
package main
import "fmt"
/*
@Time : 2022/5/19 0:18
@Author : 张大鹏
@File : main
@Software: Goland2021.3.1
@Description: 函数作为参数
*/
// 接收无参无返回值函数作为参数
func testFunc(fc func()) {
fc() // 内部调用方法
}
// 带参数函数作为参数
func testFunc2(fc func(message string), message string) {
fmt.Println("方法执行之前")
fc(message)
fmt.Println("方法执行之后")
}
func main() {
// 使用匿名函数进行测试
testFunc(func() {
fmt.Println("你好,世界。。。。")
})
fmt.Println("================")
// 测试带参数函数作为参数
testFunc2(func(message string) {
fmt.Println("接收到客户端消息:", message)
}, "你好,我是张大鹏。")
}
函数作为返回值
package main
/*
@Time : 2022/5/19 0:34
@Author : 张大鹏
@File : main
@Software: Goland2021.3.1
@Description: 函数作为返回值
*/
import "fmt"
// 函数作为返回值
func getOpFunc(fType string) func(int, int) int {
switch fType {
case "+":
return func(a int, b int) int {
return a + b
}
case "-":
return func(a int, b int) int {
return a - b
}
case "*":
return func(a int, b int) int {
return a * b
}
case "/":
return func(a int, b int) int {
return a / b
}
default:
return nil // 函数是引用类型,默认是nil
}
}
func main() {
// 获取加法
addFunc := getOpFunc("+")
fmt.Println(addFunc(11, 22))
// 获取乘法
multiplyFunc := getOpFunc("*")
fmt.Println(multiplyFunc(11, 22))
}
带参和带返回值函数作为参数
package main
import "fmt"
/*
@Time : 2022/5/19 0:27
@Author : 张大鹏
@File : main
@Software: Goland2021.3.1
@Description: 带返回值的函数作为参数
*/
// 函数作为参数
func handleTwoNum(a, b int, f func(int, int) int) int {
return f(a, b)
}
func main() {
// 加法
result := handleTwoNum(11, 22, func(a int, b int) int {
return a + b
})
fmt.Println(result)
// 乘法
result = handleTwoNum(11, 22, func(a int, b int) int {
return a * b
})
fmt.Println(result)
}
闭包函数
package main
import "fmt"
/*
@Time : 2022/5/19 13:50
@Author : 张大鹏
@File : main
@Software: Goland2021.3.1
@Description: 闭包函数
*/
func testDemo(f func(name string), name string) func() {
return func() { // 返回内部函数
f(name) // 内部函数使用了外部函数的参数
}
}
func main() {
// 得到的是一个函数
f := testDemo(func(name string) {
fmt.Println("名字是:", name)
}, "张大鹏")
// 执行函数
f()
}
文末福利
zdptool项目源码:https://github.com/zhangdapeng520/zdpgo_cmd
这个是作者抖音里面演示的那个删除文件夹的项目,从抖音过来的粉丝可以从这个地址下载哈。
文章评论