函式作為引數
packagemain
import“fmt”
/*
@Time : 2022/5/19 0:18
@Author : 張大鵬
@File : main
@Software: Goland2021。3。1
@Description: 函式作為引數
*/
// 接收無參無返回值函式作為引數
functestFunc(fcfunc()) {
fc()// 內部呼叫方法
}
// 帶引數函式作為引數
functestFunc2(fcfunc(messagestring),messagestring) {
fmt。Println(“方法執行之前”)
fc(message)
fmt。Println(“方法執行之後”)
}
funcmain() {
// 使用匿名函式進行測試
testFunc(func() {
fmt。Println(“你好,世界。。。。”)
})
fmt。Println(“================”)
// 測試帶引數函式作為引數
testFunc2(func(messagestring) {
fmt。Println(“接收到客戶端訊息:”,message)
},“你好,我是張大鵬。”)
}
函式作為返回值
packagemain
/*
@Time : 2022/5/19 0:34
@Author : 張大鵬
@File : main
@Software: Goland2021。3。1
@Description: 函式作為返回值
*/
import“fmt”
// 函式作為返回值
funcgetOpFunc(fTypestring)func(int,int)int{
switchfType{
case“+”:
returnfunc(aint,bint)int{
returna+b
}
case“-”:
returnfunc(aint,bint)int{
returna-b
}
case“*”:
returnfunc(aint,bint)int{
returna*b
}
case“/”:
returnfunc(aint,bint)int{
returna/b
}
default:
returnnil// 函式是引用型別,預設是nil
}
}
funcmain() {
// 獲取加法
addFunc:=getOpFunc(“+”)
fmt。Println(addFunc(11,22))
// 獲取乘法
multiplyFunc:=getOpFunc(“*”)
fmt。Println(multiplyFunc(11,22))
}
帶參和帶返回值函式作為引數
packagemain
import“fmt”
/*
@Time : 2022/5/19 0:27
@Author : 張大鵬
@File : main
@Software: Goland2021。3。1
@Description: 帶返回值的函式作為引數
*/
// 函式作為引數
funchandleTwoNum(a,bint,ffunc(int,int)int)int{
returnf(a,b)
}
funcmain() {
// 加法
result:=handleTwoNum(11,22,func(aint,bint)int{
returna+b
})
fmt。Println(result)
// 乘法
result=handleTwoNum(11,22,func(aint,bint)int{
returna*b
})
fmt。Println(result)
}
閉包函式
packagemain
import“fmt”
/*
@Time : 2022/5/19 13:50
@Author : 張大鵬
@File : main
@Software: Goland2021。3。1
@Description: 閉包函式
*/
functestDemo(ffunc(namestring),namestring)func() {
returnfunc() {// 返回內部函式
f(name)// 內部函式使用了外部函式的引數
}
}
funcmain() {
// 得到的是一個函式
f:=testDemo(func(namestring) {
fmt。Println(“名字是:”,name)
},“張大鵬”)
// 執行函式
f()
}
文末福利
zdptool專案原始碼:https://github。com/zhangdapeng520/zdpgo_cmd
這個是作者抖音裡面演示的那個刪除資料夾的專案,從抖音過來的粉絲可以從這個地址下載哈。