Golang中的函数

2022年5月18日 387点热度 0人点赞 0条评论

函数作为参数

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

这个是作者抖音里面演示的那个删除文件夹的项目,从抖音过来的粉丝可以从这个地址下载哈。

23450Golang中的函数

root

这个人很懒,什么都没留下

文章评论