目录
一、什么是函数
- 简单来说就是一个特定的方法,通过这个方法产生预期的结果。
- 函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输出
二、函数的定义
1. 定义函数的语法
func 函数名(参数1 参数1类型,参数2 参数2类型) 返回值类型 {
// 函数体(代码块)
}
1.1 示例,定义一个计算总价的函数
func calculateBill(price int, no int) int {
var totalPrice = price * no // 商品总价 = 商品单价 * 数量
return totalPrice // 返回总价
}
2. *****************函数中的参数列表和返回值并非是必须的,所以下面这个函数的声明也是有效的***************
func test1() {
// 译注: 表示这个函数不需要输入参数,且没有返回值
}
3. 若参数或者返回值都为同一个类型的,则可以简写
func 函数名(参数1,参数2 参数类型...) 返回值类型 {
// 函数体(代码块)
}
三、函数的返回值
- 注意:函数的返回值不能直接调用,必须先用变量接收后,再使用这个接收了返回值的变量
- 想接收一个函数的返回值,该函数有几个返回值必须要声明几个变量来接收,也可以用匿名变量(或者叫空白符)
_
来接收某个返回值
1. 多个返回值
- go中是支持多个返回值的,返回值类型用括号括起来即可
1. 语法是
func 函数名(参数1 参数1类型,参数2 参数2类型) (返回值1类型,返回值2类型) {
// 函数体(代码块)
return 值1,值2...
}
1.1 示例,定义一个计算矩形的周长和面积的函数
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)
}
2. 命名返回值
- 在定义函数时,若指定了返回值的变量名,则在函数体中,也不用重新声明该返回的变量,不需要再明确指定返回值
1. 若返回值都为同一个类型的,则可以简写
func 函数名(参数1,参数2 参数类型) (返回值1,返回值2 返回值类型) {
// 函数体(代码块)
}
1.1 如下面的rectProps方法
func rectProps(length float64, width float64)(area float64, perimeter float64) {
area = length * width
perimeter = (length + width) * 2
return // 不需要明确指定返回值,默认返回 area, perimeter 的值
}
1.1.1 可以简写为:
func rectProps(length, width float64)(area, perimeter float64) {
area = length * width // 直接赋值,不用声明
perimeter = (length + width) * 2 // 直接赋值,不用声明
return // 不需要明确指定返回值,默认返回 area, perimeter 的值
}
四、函数的参数
1. 可变长参数
- 和python不同的是,go中没有位置参数和关键字参数的概念,go中都是按照位置传参
1. go中保存多个参数用的是 ...
func 函数名(参数 ... 参数类型)(返回值 ... 返回值类型) {
// 函数体(代码块)
}
package main
import (
"fmt"
)
func test1(a ...int) {
fmt.Println("a :", a)
}
func main() {
test1(1,2,3,4,5,6)
}
// 打印结果: a : [1 2 3 4 5 6]
标签:perimeter,函数,area,golang,参数,func,返回值
From: https://www.cnblogs.com/Mcoming/p/18025484