鞍山信息港官网,做优化的网站用什么空间好,wordpress 去掉w,织梦网站去除技术支持前言#xff1a; 在Go语言中#xff0c;函数是构成程序的基本模块#xff0c;它封装了一段具有特定功能的代码#xff0c;使得代码更易读#xff0c;更易维护和重用。熟练掌握函数的定义、调用以及相关特性是成为Go语言开发者的必经之路。 目录
函数定义#xff1a;给代… 前言 在Go语言中函数是构成程序的基本模块它封装了一段具有特定功能的代码使得代码更易读更易维护和重用。熟练掌握函数的定义、调用以及相关特性是成为Go语言开发者的必经之路。 目录
函数定义给代码找个 “活儿的由头”
函数调用使唤函数干活儿
参数传递给函数 “送礼物”
值传递给函数 “拍个照”
指针传递给函数 “钥匙”
多值传递与可变参数给函数 “大礼包”
匿名函数与闭包函数界的 “临时工” 和 “特工”
匿名函数无名的干活儿的
闭包偷偷藏变量的 “特工”
函数作为值函数的 “分身术”
传递函数让函数 “打工”
返回函数函数的 “魔法盒子”
总结
函数是编程的 “百宝箱” 函数定义给代码找个 “活儿的由头”
写代码的时候是不是总觉得重复的操作太多看着就心烦函数这就派上用场了把它定义好以后想用哪儿直接喊它就行。
定义函数就像给代码立了个 “flag”告诉它 “要是有这情况你就按我说的干”。先瞅瞅这基本样子
func 我叫啥给我啥还你啥{// 我干啥
} 我叫啥这就是函数的名字得叫得响亮又明确比如叫 煮泡面一听就知道是干啥的。 给我啥参数嘛就是函数干活儿的原材料。比如 (泡面种类 string, 调料包数 int)意思是我给你泡面和调料包的数量。 还你啥干完活儿给你的成果返回值。比如 (好吃的泡面 string)给你一碗热乎的泡面。
咱整个活儿定义个 “吹牛” 函数看这操作 func 我吹牛身份 string干啥 string) 牛皮 string) {牛皮 身份 我昨天 干啥 可厉害了那场面绝了return
} 调用一下看这效果
fmt.Println(我吹牛编程大神, 写代码))
// 输出编程大神 我昨天写代码可厉害了那场面绝了
有了这个函数以后吹牛都不用费脑子了直接套模板是不是绝了
函数调用使唤函数干活儿
写好函数不调用那不就白写了调用函数就像使唤小弟一样你喊一声它就屁颠屁颠来干活儿。
简单调用
我吹牛健身达人, 举铁)
要是函数能给你多个结果你就用多个变量接
func 我给信息() (名字 string, 年龄 int) {return 张三, 25
}他的名字, 他的年龄 : 我给信息()
fmt.Printf(%s 今年 %d 岁。, 他的名字, 他的年龄)
// 输出张三 今年 25 岁。 要是有些返回值不想要咱就用 _ 来打发它
_, 他的年龄 : 我给信息()
fmt.Printf(年龄%d, 他的年龄) // 输出年龄25
这不就得了想干啥干啥函数听话得很
参数传递给函数 “送礼物”
参数传递就是给函数送东西让它用这些东西干活儿。送的方式不一样效果也不同。
值传递给函数 “拍个照”
值传递就是给函数一张参数的 “照片”函数咋折腾这张照片原参数都跟它没关系。
func 我试试改x int) {x 100
}a : 10
我试试改a)
fmt.Println(a) // 输出10a 一点事没有
这就跟给朋友照片让他随便画一样原照片还是好好的。
指针传递给函数 “钥匙”
指针传递就是把参数的 “钥匙” 给函数函数直接去你家改东西。
func 我真的改a *int) {*a 100
}a : 10
我真的改a)
fmt.Println(a) // 输出100a 被改了
这就跟把钥匙给朋友让他直接进你家改东西一样改完你就懵了。
多值传递与可变参数给函数 “大礼包”
有时候要给函数送一堆参数Go 允许我们用 ... 给它送 “大礼包”。
func 求和nums ...int) int {total : 0for _, num : range nums {total num}return total
}fmt.Println(求和1, 2, 3, 4, 5)) // 输出15
这就跟给朋友送一箱零食让他一颗一颗吃最后算总数。
匿名函数与闭包函数界的 “临时工” 和 “特工”
匿名函数无名的干活儿的
匿名函数没名字就像临时工用完就走可干活儿利索得很。
func() {fmt.Println(我是个无名小卒但能干活儿)
}()// 输出我是个无名小卒但能干活儿
咱也可以把它存起来想啥时候用就啥时候用
做饭 : func() {fmt.Println(我在做饭)
}
做饭() // 输出我在做饭
闭包偷偷藏变量的 “特工”
闭包就是匿名函数偷偷藏了一个变量像特工一样带着这个变量到处跑。
func 计数器() func() int {count : 0return func() int {count // 偷偷改 countreturn count}
}计数 : 计数器()
fmt.Println(计数()) // 输出1
fmt.Println(计数()) // 输出2
这就像有个小本子每次调用函数就偷偷在小本子上记一笔下次还能接着记。
函数作为值函数的 “分身术”
在 Go 里函数可以像玩具一样被传来传去还能变出新花样。
传递函数让函数 “打工”
func 干点啥干啥 func()) {fmt.Println(我要开始啦)干啥()fmt.Println(干完啦)
}做饭 : func() {fmt.Println(做饭中……)
}
干点啥做饭)// 输出
/*
我要开始啦
做饭中……
干完啦
*/
这就跟让做饭函数去干点啥函数那 “打一天工”干点啥就是 “工头”。
返回函数函数的 “魔法盒子”
func GetGreeter(name string) func() {return func() {fmt.Printf(你好呀%s\n, name)}
}greeter : GetGreeter(小明)
greeter() // 输出你好呀小明
这就跟打开一个 “魔法盒子”每次打开都根据名字变出不同的问候。
总结
函数是编程的 “百宝箱”
宝子们Go 语言的函数就是个 “百宝箱”你想让它干啥都能干。从定义、调用到那些奇奇怪怪的参数传递再到匿名函数、闭包、函数作为值这些 “高端操作”只要掌握了你写代码就跟玩积木一样咋搭都好看还超实用
以后写代码多让函数 “整活儿”把复杂的事儿交给它简单的事儿也交给它反正啥事儿都能交给它编程其实就是这么简单又好玩冲就完事儿