10 函数
10.1 函数的定义
10.1.1 函数的定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| func sum(x int, y int) (ret int) { return x + y }
func f1(x int, y int) { fmt.Println(x + y) }
func f2() { fmt.Println("f2") }
func f3() int { return 3 }
|
10.1.2 返回值
10.1.2.1 为返回值命名
可以为返回值指定一个名字,这就相当于提前声明了一个变量,并将该变量作为返回值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
func sum(x int, y int) (ret int) { ret = x + y return }
func sum2(x int, y int) int { ret := x + y return ret }
|
10.1.2.2 多个返回值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import "fmt"
func main() { m, n := f1() fmt.Println(m, n)
_, b := f1() fmt.Println(b) }
func f1() (int, string) { return 1, "济南" }
|
10.1.3 参数
10.1.3.1 参数类型的简写
1 2 3 4 5 6 7 8 9 10 11 12
| func f1(x int, y int) { fmt.Println("这是普通的参数声明方式") }
func f2(x, y int) { fmt.Println("参数中多个连续的参数类型一致时,可以省略非最后一个参数的类型") }
func f3(x, y int, m, n string, a, b bool) { fmt.Println("参数中多个连续的参数类型一致时,可以省略非最后一个参数的类型") }
|
10.1.3.2 可变长度参数
- 可变长参数必须写在函数最后
- go 语言中没有默认参数的概念
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import "fmt"
func main() { f4("济南", 1, 2, 3, 4, 5, 6) }
func f4(x string, y ...int) { fmt.Println(x)
fmt.Println(y) fmt.Printf("%T\n", y) }
|
运行结果如下:
10.2
P35