1.函数及多返回值
package main
import "fmt"
// foo1 基本函数定义 func 函数名 (参数列表)(返回值列表,如果是1个参数时,可以去掉括号)
func foo1(a string, b int) int {
fmt.Println("a = ", a)
fmt.Println("b = ", b)
c := 100
return c
}
// foo2 返回多值的, 匿名的
func foo2(a string, b int) (int, int) {
fmt.Println("a = ", a)
fmt.Println("b = ", b)
return 666, 777
}
// 返回多个返回值,有形参名称的
func foo3(a string, b int) (r1 int, r2 int) {
fmt.Println("----- foo3 -----")
fmt.Println("a = ", a)
fmt.Println("b = ", b)
// r1, r2 属于foo3的形参,初始化默认值是0
// r1, r2 作用域空间 是foo3 整个函数的{}空间
fmt.Println("r1和r2没有被复制时的默认值是")
fmt.Println("r1 = ", r1)
fmt.Println("r2 = ", r2)
// 给有名称的返回值变量赋值
r1 = 1000
r2 = 2000
return
}
// 返回多值函数,返回列表数据类型一致
func foo4(a string, b int) (r1, r2 int) {
fmt.Println("----- foo4 -----")
fmt.Println("a = ", a)
fmt.Println("b = ", b)
// 给有名称的返回值变量赋值
r1 = 3000
r2 = 4000
return
}
// main
func main() {
// 返回单值
c := foo1("abc", 1)
fmt.Println("c = ", c)
//返回多值,匿名的
ret1, ret2 := foo2("foo2", 999)
fmt.Println("ret1 = ", ret1, ", ret2 = ", ret2)
//返回多值,有参数名
ret1, ret2 = foo3("foo3", 1000)
fmt.Println("ret1 = ", ret1, ", ret2 = ", ret2)
//返回多值,有参数名
ret1, ret2 = foo4("foo4", 3000)
fmt.Println("ret1 = ", ret1, ", ret2 = ", ret2)
}
// 执行结果
a = abc
b = 1
c = 100
a = foo2
b = 999
ret1 = 666 , ret2 = 777
----- foo3 -----
a = foo3
b = 1000
r1和r2没有被复制时的默认值是
r1 = 0
r2 = 0
ret1 = 1000 , ret2 = 2000
----- foo4 -----
a = foo4
b = 3000
ret1 = 3000 , ret2 = 4000