第六篇 函数
欢迎来到Golang教程系列的第六篇
什么是函数
函数是执行一个特定任务的一块代码。函数接受输入,对输入执行一些计算,并生成输出。
函数声明
下面就是Go中声明函数的语法。
func functionname(parametername type) returntype{
// function body
}
函数声明是以关键字func开始,接着是函数名称functionname。参数放在指定的(和)之间,然后接着是函数的返回类型returntype。指定参数的语法是,参数名后面跟着类型。有多个参数的话格式是(parameter1 type, parametere2 type),然后函数的主体代码块就在{和}之间。
函数的参数和返回类型是可选的。因此,下面的函数声明的语法也是有效的。
func functionname(){
}
简单函数
下面我们写一个函数,接收产品的单价和产品的数量作为输入参数,通过累计价格来计算出总价,然后输出总价。
func calculateBill(price int, no int) int {
var totalPrice = price * no
return totalPrice
}
上面的函数输入两个int类型的参数price和no,返回产品价格和数量计算的totalPrice。返回值也是int类型。
如果连续的参数都是属于同一个类型,我们可以避免每次都写类型,只需要在末尾写出类型就够了。例如price int, no int可以写成price, no int,上面的函数就可以这么写。
func calculateBill(price, no int) int {
var totalPrice = price * no
return totalPrice
}
现在,我们有一个函数,让我们在代码中调用这个函数。调用一个函数的语法是functionname(parameters),上面的函数可以用这个代码调用。
calculateBill(10,5)
这个就是上面函数输入总价的完整代码。
package main
import "fmt"
func calculateBill(price , no int) int {
var totalPrice = price * no
return totalPrice
}
func main() {
price, no := 90, 6
totalPrice := calculateBill(price, no)
fmt.Println("total ptice is", totalPrice)
}
上面的程序会输出;
total ptice is 540
返回多个值
一个函数也可以有多个返回值。让我们写一个rectProps函数,接收矩形的length和width作为输入参数,然后返回它的面积area和周长perimeter。矩形的面积area是它的长和宽的乘积,周长perimeter则是长和宽之和的两倍。
package main
import "fmt"
func rectProps(length, width float64)(float64, float64) {
var area = length * width
var perimeter = (length + width) * 2
return area, perimeter
}
func main() {
area, perimeter := rectProps(10.8, 5.6)
fmt.Printf("Area %f Perimeter %f", area, perimeter)
}
如果一个函数有多个返回值,那么它们必须放在(和)之间,func rectProps(length, width float64)(float64, float64)有两个参数length和width,并且返回两个float64的值,上面的程序输出:
Area 60.480000 Perimeter 32.800000
命名返回值
一个函数也可以命名它的返回值。如果要命名返回值,那就可以考虑在函数的第一行将它当作变量来声明。
上面的rectProps函数用命名返回值重写
func rectProps(length, width float)(area, perimeter float64) {
area = length * width
perimeter = (length + width) * 2
return // 不需要显式地返回值
}
area和perimeter是上面函数返回值的命名,注意函数里面的返回语句不需要显式返回任何值。因为area和perimeter是函数声明中的指定返回值。当遇到返回语句时,它们就会在函数中自动返回。
空白标识符
_是Go中的空白标识符,它可以用来代替任何类型的任何值。接下来让我们看下如何使用空白标识符。
rectProps函数返回矩形的面积和周长,如果我们只需要面积area,而不需要周长perimeter是,这时,就可以使用_。
下面的程序中,rectProps函数只返回了area。
package main
import "fmt"
func rectProps(length, width float64)(area, perimeter float64) {
area = length * width
perimeter = (length + width) * 2
return
}
func main() {
area, _ := rectProps(10.8, 5.6)
fmt.Printf("Area %f ", area)
}
在语句area, _ = rectProps(10,8, 5.6)中,我们只用了area和用_符号代替了
perimeter。
以上就是本篇的全部,感谢阅读,这是我第一次翻译,难免会有翻译不当的地方,如果有什么反馈和评论,欢迎提出来!
浙公网安备 33010602011771号