Go 语言入门指南(三) | 青训营

72 阅读3分钟

函数

函数是基本的代码块,用于执行一个任务。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。Go语言最少有个main()函数 golang函数特点

  • 无需声明原型
  • 支持不定变参
  • 支持多返回值
  • 支持命名返回参数
  • 支持匿名函数和闭包
  • 函数也是一种类型,一个函数可以赋值给变量

func FuncName(参数列表)(o1 typ1,o2 type2/返回类型/){

//函数体

return v1,v2//返回多个值}

函数由关键字func开始声明

FuncName函数名称,约定,函数名首字母小写为private,大写即为public

参数列表,可以有0个或者多个参数 参数格式:变量名 类型 如果有多个参数通过逗号分隔,不支持默认参数

返回值可以只有类型,没有变量名

只有一个返回值且不声明返回值变量,可以省略,包括返回值的括号

如果没有返回值,那么直接省略最后的返回信息

如果有返回值,那么必须在函数的内部添加return语句

无参无返回值函数

func MyFunc(){

}

调用 : 函数名()

有参无返回值

func MyFunc(a int){

}

调用: 函数名(所需参数)

调用函数传递的参数叫实参

定义函数时,在函数名后面()定义的参数叫形参

func MyFunc(a int,b int){

}

func MyFunc(a ,b int){

}

func MyFunc(a,b string, c float64,d,e int){

}

不定参数类型

func MyFunc(args...int){//传递的实参可以是一个或者多个

fmt.Println(len(args))//获取用户传递参数个数

}

不定参数一定只能放在形参的最后一次参数

固定参数一定要传参,不定参数根据需求传递

func myfunc(tmp...int){

}

func test(args...int){

myfunc(args...)//全部元素传递给myfunc

myfunc(args[2:]...)//从args[2]开始(包括本身),把后面所有元素传递过去

myfunc(args[:2])//从args[0]~args2传递过去}

无参有返回值

只有一个返回值

func myfunc()int{

return 666

}

//给返回值起一个名字,go推荐写法

func myfunc()(result int){

result=666

return

}

//不常用

func myfunc()(result int){

return 666

}

多个返回值

func myfunc01()(int,int,int){

return 1,1,1}

//go官方推荐写法

func myfunc()(a int,b int,c int){

a,b,c=111,222,333

return

}

函数调用 a,b,c:=myfunc()

有参有返回值函数

func MaxAndMin(a,b int)(max,min int){

if a>b{

max=a

min=b}else{

max=b

min=a

}

}

有返回值的函数,必须通过return返回

调用 a,_:=MaxAndMin(10,20)//通过匿名变量丢弃某个返回值

函数调用流程:先调用后返回,先进后出

函数类型

函数也是一种数据类型,我们可以通过type来定义它,它的类型就是所拥有相同的参数,相同返回值的一种类型

type FuncType func(int,int) int//声明一个函数类型,func后面没有函数名

func Calc(a,b int,f FuncType)(result int){

result=f(a,b)

return}

func Add(a,b int) int{

return a+b}

函数调用:第三个参数为函数名字,此函数的参数,返回值必须和FuncType类型一致

result:=Calc(1,1,Add) 今天主要是函数的内容,跟Java还是有较大书写格式差异 原来是觉得这篇文章没什么问题的,不知道为什么没被统计到,仔细研读之后发现可能是代码太多,字太少了,文字的字数不够吧。 所有还是再多加一些字好了,希望申诉通过。