本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

函数基本使用

一、定义格式

函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。

Go 语言函数定义格式如下:

func FuncName(/*参数列表*/) (o1type1,o2type2/*返回类型*/) { //函数体 return v1, v2//返回多个值 }

使用函数主要是为了方便我们以后一些大量代码的调用。

func FuncName就是定义一个函数给他起个名字,func FuncName (a int, b int)在这个里面可以传两个int值,func FuncName (a int, b int)(va int,vb int){}中的vavb是函数返回值。

二、无参无返回值

func Test() {//无参无返回值函数定义 fmt.Println("this is a test func") } func main() { Test() //无参无返回值函数调用 }

这个是最简单的函数了,只要在main里面调用就行,Test()然后就会打印,this is a test func

二、 有参无返回值

1. 普通参数列表

func Test01(v1int,v2int) {//方式1 fmt.Printf("v1=%d,v2=%d\n",v1,v2) } func Test02(v1,v2int) {//方式2, v1, v2都是int类型 fmt.Printf("v1=%d,v2=%d\n",v1,v2) } func main() { Test01(10,20) //函数调用 Test02(11,22) //函数调用 }

意思就是我Test01明确表明了我的参数是两个int类型,Test02里面的v1就没有明确表明是什么类型,其实都是一样的,然后在main里面调用展示一下。

2. 不定参数列表

2.1 不定参数类型

不定参数是指函数传入的参数个数为不定数量。为了做到这点,首先需要将函数定义为接受不定参数类型:

//形如...type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数 func Test(args...int) { for_,n := range args{//遍历参数列表 fmt.Println(n) } } func main() { //函数调用,可传0到多个参数 Test() Test(1) Test(1,2,3) }

Test(args...int)代表不确定有多少个int类型的参数要放到里面。

2.2 不定参数的传递

func MyFunc01(args...int) { fmt.Println("MyFunc01") for_,n := range args{//遍历参数列表 fmt.Println(n) } } func MyFunc02(args...int) { fmt.Println("MyFunc02") for_,n:=range args{//遍历参数列表 fmt.Println(n) } } func Test(args...int) { MyFunc01(args...)//按原样传递,Test()的参数原封不动传递给MyFunc01 MyFunc02(args[1:]...)//Test()参数列表中,第1个参数及以后的参数传递给MyFunc02 } func main() { Test(1,2,3)//函数调用 }

Test里面调用MyFunc01MyFunc02,并且把所有参数都传给了MyFunc01,把除了第0个参数外的其他参数传给了MyFunc02

三、 无参有返回值

有返回值的函数,必须有明确的终止语句,否则会引发编译错误。

1. 一个返回值

//方式1 func Test01() int { return 250 } // 这个int就是定义的返回值类型,也就是说你的返回值只能是int类型,不能回其他类型 // 官方建议:最好命名返回值`func Test01()(a int){ a=250 return a}` // 因为不命名返回值,虽然使得代码更加简洁了,但是会造成生成的文档可读性差 //方式2,给返回值命名 func Test02() (value int) { value=250 return value } //方式3,给返回值命名 func Test03() (value int) { value = 250 return } func main(){ v1 := Test01()//函数调用 v2 := Test02()//函数调用 v3 := Test03()//函数调用 fmt.Printf("v1=%d,v2=%d,v3=%d\n", v1, v2, v3) }

2. 多个返回值

//方式1 func Test01() (int,string) { return 88,"zhiliao" } //方式2,给返回值命名 func Test02() (a int,str string) { a = 88 str = "zhiliao" return a,str } func main(){ v1,v2 := Test01() // 函数调用 _,v3 := Test02() // 函数调用,第一个返回值丢弃 v4,_ := Test02() // 函数调用,第二个返回值丢弃 fmt.Printf("v1=%d,v2=%s,v3=%s,v4=%d\n",v1,v2,v3,v4) }

四、有参有返回值

//求2个数的最小值和最大值 func MinAndMax(num1 int, num2 int) (min int, max int) { if num1 > num2{//如果num1大于num2 min = num2 max = num1 } else { max = num2 min = num1 } return } func main() { min,max := MinAndMax(33,22) fmt.Printf("min=%d,max=%d\n", min, max) //min=22,max=33 }

用两个参数和两个返回值,在我们掉用方法的时候就会传两个参数3222然后我们进去判断一下如果3222大那么我们就把22赋值给返回值min,然后把32赋值给返回值max,然后return出去就好了。

1906人已阅读,今天你学习了吗?

添加新回复