函数
函数是基本的代码块,用于执行一个任务。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。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还是有较大书写格式差异 原来是觉得这篇文章没什么问题的,不知道为什么没被统计到,仔细研读之后发现可能是代码太多,字太少了,文字的字数不够吧。 所有还是再多加一些字好了,希望申诉通过。