本文系第六篇Golang语言学习教程
声明函数
语法
func name(parametername type) returntype {
//函数体(具体实现的功能)
}
函数声明包括:
函数名name
:自定义的函数名
形式参数列表()
:()中定义,描述了函数的参数名以及参数类型
返回值列表rerurntype
:描述了函数返回值的变量以及类型
函数体{}
:具体实现功能的代码
函数声明释义
函数的声明以关键词func
开始,后面紧跟自己定义的函数名name(函数名)
,
函数的参数列表定义在()
之间,
返回值的类型定义在returntype
(返回值列表)处,
包含在{}
之间的就是函数体。
注:声明一个参数的语法为参数名 参数类型,声明多个参数采用(参数名 参数类型, 参数名 参数类型)的形式。
函数中参数列表和返回值并非必须的,是可以省略的。
例:以下函数声明也是有效的
func testfunc(){
//此函数不需要输入参数,且没有返回值
}
示例函数
//平分糖果的函数,输入参数是总共的糖果数量和人的数量,两者的商为每人分的数量,作为返回值
func Candy(total int, people int) int { //参数类型相同时可写成(total, people int)
var avg = total / people //平均值 = 总数 / 人数
return avg //返回平均值
}
上述有两个整型的输入,total
和people
,返回值为avg
,也是整数类型。
现在已经定义了一个函数,需要在程序中调用这个函数。调用函数的语法为:name(parametername)
,如下:
Candy(20, 5)
完成了函数的声明与调用后,就可以写出一个完整的程序,将每个人分到的糖果输出:
package main
import "fmt"
//平分糖果的函数,输入参数是总共的糖果数量和人的数量,两者的商为每人分的数量,作为返回值
func Candy(total int, people int) int { //参数类型相同时可写成(total, people int)
var avg = total / people
return avg
}
func main(){
avg := Candy(20, 5)
fmt.Println("Everyone can get", avg)
}
以上程序运行结果为:
Everyone can get 4
多返回值
Go语言支持一个函数有多个返回值。
例:
package main
import (
"fmt"
)
//求长方形周长和面积的函数,输出参数是长和宽,周长是长和宽之和的两倍,面积是长和宽的乘积
func rectangle(length,width int)(int, int) {
var perimeter= (length + width) * 2
var area= length * width
return perimeter, area
}
func main (){
perimeter, area := rectangle(20, 5)
fmt.Println("the perimeter is", perimeter, "and the area is", area)
}
如果一个函数有多个返回值,必须用()括起来,以上程序中两个返回值分别为perimeter
和area
。
以上程序运行结果为:
the perimeter is 50 and the area is 100
若只想调用一个返回值,则将另一返回值用_
代替:
perimeter, _ := rectangle(20, 5)
命名返回值
从函数中可以命名一个返回值,一旦命名了返回值,可以认为这些值在函数的第一行就被声明变量,在函数体中不需要声明。
上面的rectangle
函数可以写成:
func rectangle(length,width int)(perimeter, area int) { //在第一行中命名返回值,声明变量
perimeter= (length + width) * 2
area= length * width
return //不需要指定返回值,默认返回 perimeter, area
}
仔细对比上面两种写法发现,命名返回值在 rerurntype
返回值列表段声明了返回值,在函数体中不需要声明变量,直接等于值即可。
有疑问加站长微信联系(非本文作者)