这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
Go语言main函数
1.main函数只能用于main包中,且只能定义一个。
2.main函数是程序的入口,main函数必须在package main的包。main函数没有入参和返回值。使用flag包来获取和解析命令行参数。
Go语言函数声明与定义
语法
func:定义函数所使用的关键字,所有的函数前面都必须使用该关键字。
param1:函数的形参 1
funcName:函数的名称
param1Type:函数的形参 1 的类型
param2:函数的形参 2
param2Type:函数的形参 2 的类型
returnVal: 可选,函数返回值
returnType : 函数返回值类型
return: 函数返回值使用的关键字
valuelist: 函数返回值列表
说明
我们定义了一个函数 funcName,该函数有两个参数和一个返回值。
Go语言函数调用
语法
returnVal1: 函数的第一个返回值
returnVal2: 函数的第二个返回值
funcName :要调用的函数的名称
param1:函数的参数1
param2:函数的形参 2
计算和
实现计算两个数之间的所有数的和
我们定义了一个函数 sum,传入两个 int 类型 的参数 a 和 b,函数返回一个 int 类型的参数。在函数里面,首先,我们使用系统函数 Max 和 min 寻找参数 a 和 b 的最大值和最小值,并将结果分别保存在变量 maxVal 和 minVal 里。
接着,我们使用 for 循环 遍历 maxVal 和 minVal 之间的所有数,并将它们相加赋值给变量 sum,最后返回 sum 即实现了求 a 和 b 之间的和的逻辑。
在 main() 函数里面,我们调用了 sum 函数,并传入了两个参数 10 和 20,使用 result 变量来接受 sum 函数返回的值,最后使用 Println() 函数打印最后的结果。
Go语言函数参数
函数的参数
1.1 参数的使用
形式参数:定义函数时,用于接收外部传入的数据,叫做形式参数,简称形参 实际参数:调用函数时,传给形参的实际的数据,叫做实际参数,简称实参
函数调用:
1:函数名称必须匹配
2:实参与形参必须一一对应:顺序,个数,类型
定义
说明
参数 param1 和参数 param2 的类型相同,那么我们就可以省略 param1 后面的参数类型,直接在 param2 后面写类型
参数 param3 和参数 param4 的类型相同,那么我们就可以省略 param3 后面的参数类型,直接在 param4 后面写类型
递归函数 递归指函数可以直接或间接的调用自身。递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理
数字阶乘
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且 0 的阶乘为 1,自然数 n 的阶乘写作n!,“基斯顿·卡曼”在 1808 年发明了n!这个运算符号。
多个函数组成递归
Go语言中也可以使用相互调用的递归函数,多个函数之间相互调用形成闭环,因为Go语言编译器的特殊性,这些函数的声明顺序可以是任意的
引用传递(指针传递)
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
Golang数组作为参数传入函数时,进行的是值传递
闭包
由于匿名函数可以定义在其他函数内,同时变量的作用域为层叠的,也就是匿名函数可以会访问其所在的外层函数内的局部变量。当外层函数运行结束后,匿名函数会与其使用的外部函数的局部变量形成闭包。
匿名函数的定义
- 在定义时调用匿名函数
- 将匿名函数赋值给变量 函数也是值。它们可以像其它值一样传递。 函数值可以用作函数的参数或返回值。
高阶函数定义
函数式编程语言将函数作为第一等公民,也就是说,函数可以作为参数,也可以作为返回值。
将函数作为参数,或者返回值的特殊函数,就叫做高阶函数。
map()函数
由于map是Go内置的关键字,所以将map改为mapper函数。
filter()函数
GO语言中的内置函数
close 主要用来关机channel
len 用来求长度,比如string、array、slice、map、channel
new 用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针
make 也是用来分配内存的,主要用于分配应用类型比如chan、map、slice。返回的是具体的引用
append 用来追加元素到数组、slice中
panic、recover用来做错误处理
总结 1.在GO中,函数也是一种数据类型,可以赋值给一个变量,该变量就是一个函数类型变量。通过该变量可以调用函数
2.函数可以作为形参,并且调用。