func 函数名(形参列表)(返回值类型列表){ //代码体(程序体) 执行语句… return + 返回值列表 }
(1) 单个返回值
传统写法要求:返回值和返回值的类型对应,顺序不能差。
package main import "fmt" func main() { a := 10 b := 20 sum := test4(a, b) fmt.Println(sum) } //func 函数名(函数参数列表)(函数返回值) //如果一个返回值就可以不用括号 func test4(a int, b int) int { /* sum := a + b return sum */ return a + b }
return 表示函数的结束,如果函数有返回值return可以将返回值返回。函数会有销毁的过程,返回值返回回来并不是通过内存返回回来,而是通过CPU把这个值返回回来,a+b存在CPU的计算器中,然后再从计算器中返回的
我们还可以这种格式来写
func test4(a int, b int) (sum int) { sum = a + b return //相当于return sum }
(2)多个返回值
升级写法:对函数返回值命名,里面顺序就无所谓了,顺序不用对应
func main() { //函数有多个返回值 要一一对应接收数据 sum, sub := test5(10, 20) _, x := test5(1, 1) fmt.Println(sum, sub) //30 -10 fmt.Println(x) //0 /* 加入两个变量都不想用 */ // _, _ := test5(1, 1)//err:必须得有一个接收 test5(1, 1) //我们可以这样不接受,不会报错 } //1 func test5(a int, b int) (sum int, sub int) { sum = a + b sub = a - b return }
test5可以换一种写法
//2 func test5(a int, b int) (int, int) { sum := a + b sub := a - b return sum, sub }