GO语言函数|青训营笔记

232 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

Go语言main函数

hello go.png 1.main函数只能用于main包中,且只能定义一个。

2.main函数是程序的入口,main函数必须在package main的包。main函数没有入参和返回值。使用flag包来获取和解析命令行参数。

Go语言函数声明与定义

语法

2.png

func:定义函数所使用的关键字,所有的函数前面都必须使用该关键字。

param1:函数的形参 1

funcName:函数的名称

param1Type:函数的形参 1 的类型

param2:函数的形参 2

param2Type:函数的形参 2 的类型

returnVal: 可选,函数返回值

returnType : 函数返回值类型

return: 函数返回值使用的关键字

valuelist: 函数返回值列表

说明

我们定义了一个函数 funcName,该函数有两个参数和一个返回值。

Go语言函数调用

语法

5.png

returnVal1: 函数的第一个返回值

returnVal2: 函数的第二个返回值

funcName :要调用的函数的名称

param1:函数的参数1

param2:函数的形参 2

计算和

实现计算两个数之间的所有数的和

认为人为你.png

我们定义了一个函数 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:实参与形参必须一一对应:顺序,个数,类型

定义

556.png

说明

参数 param1 和参数 param2 的类型相同,那么我们就可以省略 param1 后面的参数类型,直接在 param2 后面写类型

参数 param3 和参数 param4 的类型相同,那么我们就可以省略 param3 后面的参数类型,直接在 param4 后面写类型

递归函数 递归指函数可以直接或间接的调用自身。递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理

1.png

数字阶乘

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且 0 的阶乘为 1,自然数 n 的阶乘写作n!,“基斯顿·卡曼”在 1808 年发明了n!这个运算符号。

多个函数组成递归

Go语言中也可以使用相互调用的递归函数,多个函数之间相互调用形成闭环,因为Go语言编译器的特殊性,这些函数的声明顺序可以是任意的

2.png

引用传递(指针传递)

引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

3.png

Golang数组作为参数传入函数时,进行的是值传递

5.png

闭包

由于匿名函数可以定义在其他函数内,同时变量的作用域为层叠的,也就是匿名函数可以会访问其所在的外层函数内的局部变量。当外层函数运行结束后,匿名函数会与其使用的外部函数的局部变量形成闭包。 单位.png

匿名函数的定义

  1. 在定义时调用匿名函数
  2. 将匿名函数赋值给变量 函数也是值。它们可以像其它值一样传递。 函数值可以用作函数的参数或返回值。

多渠道.png

高阶函数定义

函数式编程语言将函数作为第一等公民,也就是说,函数可以作为参数,也可以作为返回值。
将函数作为参数,或者返回值的特殊函数,就叫做高阶函数。

map()函数

认识的.png

由于map是Go内置的关键字,所以将map改为mapper函数。

filter()函数

认识的.png

GO语言中的内置函数

close 主要用来关机channel

len 用来求长度,比如string、array、slice、map、channel
new 用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针
make 也是用来分配内存的,主要用于分配应用类型比如chan、map、slice。返回的是具体的引用 append 用来追加元素到数组、slice中 panic、recover用来做错误处理

总结 1.在GO中,函数也是一种数据类型,可以赋值给一个变量,该变量就是一个函数类型变量。通过该变量可以调用函数

2.函数可以作为形参,并且调用。