函数函数定义函数变量函数创建指针创建01.03.02.04.目录01函数定义•函数定义•函数参数•函数传递packagemain//指定其所在的包import"fmt"//导入fmt包funcmain(){//main()函数是程序的入口fmt.Println("不忘初心,牢记使命!")//Println()函数打印内容}•Go语言程序中都有一个main()函数•可以通过其它函数来实现不同功能,逻辑上每个函数执行的是指定的任务•Go语言标准库提供了多种可用的内置函数1函数定义•Go语言是编译型语言,函数编写时顺序是无关紧要的•函数构成了代码执行的逻辑结构•函数是基本的代码块•将一个需要很多行代码的复杂问题分解为一系列简单的任务来解决•同一个任务(函数)可以被多次调用,有助于代码重用•关键字func•函数名•参数列表•返回值•函数体•返回语句函数的基本组成函数的特点1函数定义packagemainimport"fmt"funcmain(){fmt.Println(sum(1,2,3,4,5))}funcsum(numbers...int)int{s:=0fori:=rangenumbers{s+=numbers[i]}returns}•当函数执行到代码块最后一行}之前或者return语句的时候会退出•其中return语句可以带有零个或多个参数,这些参数将作为返回值供调用者使用运行结果为:151函数定义1函数定义(a).支持参数数量不固定(b).支持匿名函数及闭包(c).支持函数本身作为值传递(d).支持函数的延迟执行(e).支持把函数作为接口调用(f).无须前置声明Go语言函数的支持特性(g).不支持命名嵌套定义(h).不支持同名函数重载(i).不支持默认参数(j).支持多返回值(k).支持命名返回值匿名函数或者lambda函数方法Go语言里面拥有3种类型的函数1函数定义普通的带有名字的函数02函数创建•函数声明•函数参数•函数传递2函数创建func函数名(参数列表)(返回参数列表){函数体}函数的语法packagemainimport("fmt""math")funcmain(){fmt.Println(hypot(3,4))}funchypot(x,yfloat64)float64{returnmath.Sqrt(x*x+y*y)}在左边的hypot函数中:x和y是形参名,3和4是调用时的传入的实数,函数返回了一个float64类型的值,返回值也可以像形式参数一样被命名,在这种情况下,每个返回值被声明成一个局部变量,并根据该返回值的类型,将其初始化为0。函数案例运行结果为:5(a).func:函数是以func为关键字;(b).函数名:函数名由字母、数字和下划线构成,但是函数名不能以数字开头;在同一个包内函数名不可重复;(c).参数列表:参数列表中的每个参数都由参数名称和参数类型两部分组成,参数变量为函数的局部变量。如果函数的参数数量不固定,Go语言函数还支持可变参数;(d).返回参数列表:返回参数列表中的每个参数由返回的参数名称和参数类型组成,也可简写为返回值类型列表;(e).函数体:函数体指函数的主体代码逻辑,若函数有返回参数列表,则函数体中必须有return语句返回值列表。函数的语法详解2函数创建2函数创建函数可以有一个或者多个参数。如果函数使用参数,则该参数被称为函数的形参。形参就像定义在函数体内的局部变量。Go函数还支持可变参数(简称“变参”)。接受变参的函数有着不定数量的参数。参数形参在定义函数时,用于接收外部传入的数据被称为形式参数实参在调用函数时,传给形参的实际的数据被称为实际参数2函数创建Go语言函数中的传递方式值传递在调用函数时将实际参数复制一份传递到函数中函数运行中如果对参数进行修改,将不会影响到实际参数引用传递在调用函数时将实际参数的地址传递到函数中函数运行中对参数所进行的修改,将影响到实际参数packagemainimport"fmt"funcnumber1(numint){num=2}funcnumber2(num*int){*num=2}funcmain(){a:=1number1(a)fmt.Println(a)//值传递number2(&a)fmt.Println(a)//引用传递}运行结果为:12默认情况下,Go语言所使用的是值传递,即在调用过程中不会影响到实际参数。函数参数调用需遵守如下形式:(a).函数名称必须匹配;(b).实参与形参必须一一对应:顺序、个数、类型。2函数创建03函数变量•函数变量声明•Go语言中,函数也是一种类型,我们可以将其保存在变量中•可以通过type定义这种变量的类型•拥有相同参数和相同返回值的函数属于同一种类型•其优点是:可以将...