1、函数变量
一上来乍一看,函数变量?这究竟是什么意思呢?你函数就函数,变量便是变量,这两者搞在一块,到底是几个意思呢?
Go函数函数函数类型函数变量
package main
import (
"fmt"
)
func site() {
fmt.Println("秋码记录:https://qiucode.cn")
}
func main() {
//声明一个函数变量 qiucode
var qiucode func()
//将自定义 site 函数赋值给 函数变量 qiucode
qiucode = site
//调用 qiucode() 就相当于调用了 site()
qiucode()
}
2、匿名函数
JavaPHPPython匿名函数Go匿名函数匿名变量(_)
package main
import (
"fmt"
)
func main() {
//声明一个匿名函数并自调用
func(name string) {
fmt.Println("秋码记录:", name)
}("https://qiucode.cn")
//声明一个匿名函数 并赋值给一个变量
note := func(desc string) {
fmt.Println(desc)
}
//通过进行匿名函数的调用
note("仗剑行于江湖,执笔记江湖事")
}
匿名函数回掉函数
package main
import (
"fmt"
)
func webSite(list []string, callBack func(string)) {
for _, val := range list {
callBack(val)
}
}
func main() {
webSite([]string{"秋码记录", "https://qiucode.cn", "仗剑行于江湖,执笔记江湖事"}, func(str string) {
fmt.Println(str)
})
}
匿名函数
package main
import (
"flag"
"fmt"
)
//从命令行输入值 --qiucode=输入的值
var qiucodeParam = flag.String("qiucode", "", "qiucode to perform")
func main() {
//解析完成,将指针变量 qiucodeParam 指向命令行输入的值
flag.Parse()
//定义一个 map 键是 string 类型 值是 func
var qiucode = map[string]func(){
"qiuma": func() {
fmt.Println("秋码记录")
},
"qiucode": func() {
fmt.Println("https://qiucode.cn")
},
"world": func() {
fmt.Println("有人的地方,就是江湖!")
},
}
//指针变量指向命令行传入的值 在 map 查找命令行输入的字符串 是否存在在该 map 中
//如果存在 就回调该 键 所对应的值 也就是 函数
if fun, flag := qiucode[*qiucodeParam]; flag {
fun()
} else {
fmt.Println("qiucode not found")
}
}