19、函数的类型
1.函数也是有类型的
func (参数列表类型的数据类型)(返回值列表的数据类型)
/**
* @author ly (个人博客:https://www.cnblogs.com/qbbit)
* @date 2023/5/11 22:49
* @tags 喜欢就去努力的争取
*/
package main
import "fmt"
func main() {
a := 10
fmt.Printf("%T\n", a)
b := [4]int{1, 2, 3, 4}
fmt.Printf("%T\n", b)
c := []string{"Python", "Java", "GO"}
fmt.Printf("%T\n", c)
d := make(map[int]string)
d[1] = "zs"
fmt.Printf("%T\n", d)
// 函数的数据类型
fmt.Printf("%T\n", funType)
fmt.Printf("%T\n", funType2)
fmt.Printf("%T\n", funType3)
fmt.Printf("%T\n", funType4)
}
func funType() {
}
func funType2(num int) string {
return "ly"
}
func funType3(s string) string {
return "ly"
}
func funType4(a, b, c string, d map[int]string, e []int, f [2]string) (m1 map[string][]int, s1 string, arr [4]int) {
arr1 := [4]int{1, 2, 3, 4}
return nil, "", arr1
}
2.函数的本质
函数的本质是一个特殊类型的变量
/**
* @author ly (个人博客:https://www.cnblogs.com/qbbit)
* @date 2023/5/15 20:52
* @tags 喜欢就去努力的争取
*/
package main
import "fmt"
func main() {
// 定义一个函数类型的变量
var f1 func(int, int)
// 把fun1赋值给f1
f1 = fun1
// 调用函数
f1(2, 3)
/**
注意加括号和不加括号的区别
不加括号:指的是函数的内存地址
加括号:指的是函数的调用
*/
}
func fun1(a, b int) {
fmt.Println(a, b)
}
3.匿名函数
匿名:没有名字
匿名函数:没有名字的函数
/**
* @author ly (个人博客:https://www.cnblogs.com/qbbit)
* @date 2023/5/15 20:59
* @tags 喜欢就去努力的争取
*/
package main
import "fmt"
func main() {
// 正常的函数调用
fun2("在学习GO语言")
// 匿名函数调用
res := func(a int) int {
return a * 10
}(20) // 调用函数,立即把匿名函数的返回值赋值给res
// 这个匿名函数就有点类似js中的立即调用函数
fmt.Println(res)
func2 := func(a int) int {
return a + 100
} // 把匿名函数赋值给一个func2变量
res2 := func2(10) // 调用func2函数
fmt.Println(res2)
}
func fun2(a string) string {
return "ly" + a
}
定义一个匿名函数,直接进行调用。通常只能使用一次这个匿名函数。因为前面我们知道函数其实也是一个特殊的变量,那么我们可以吧匿名函数赋值给某一个变量,然后我们就可以进行多次调用了
4.Go语言中支持函数式编程
- (1) 将一个匿名函数作为另外一个函数的参数,回调函数
- (2) 将匿名函数作为另外一个函数的返回值,可以形成闭包的结构
这一块后面学习整理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY