go 函数返回值的几种形式

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
}