函数

函数概述

  • 函数是对一段能够重复使用的代码的封装
  • 函数的参数定义了外界给函数输入的数据
  • 函数的返回值定义了函数给外界输出的数据
  • Go语言函数支持不定长参数和多个返回值

@函数定义和调用

1
2
3
4
5
6
//定义函数
func sayHello() {
fmt.Println("fuck off!")
}
//调用函数
sayHello()

@函数参数 无参函数

1
2
3
func add0() {
fmt.Println("没参数,add你妹啊")
}

带参函数

1
2
3
4
func add1(a int) {
fmt.Println("收到一个参数", a)
fmt.Println("一个参数,add你妹啊")
}

多个参数

1
2
3
4
5
6
7
8
9
10
11
12
//多个参数
func addm1(a int, b int) {
fmt.Println("加和是", a+b)
}
//类型相同的参数被合写在一起了
func addm2(a, b int) {
fmt.Println("加和是", a+b)
}
//类型不同的参数
func addm3(a, b int, c float32) {
fmt.Println("加和是", float32(a)+float32(b)+c)
}

不定长参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func addx(x ...int) {
//参数的长度是 5
fmt.Println("参数的长度是", len(x))
//参数的类型是[]int
fmt.Printf("参数的类型是%T\n", x)
var result = 0
//遍历不定长参数
for i, v := range x {
fmt.Println(i, v)
result += v
}
//加和是 15
fmt.Println("加和是", result)
}

@函数返回值 无返回值

1
2
3
4
//无返回值
func sub0(a, b int) {
fmt.Println("相减的结果是", a-b)
}

有返回值

1
2
3
4
5
6
7
8
9
10
//有返回值
func sub11(a, b int) int {
fmt.Println("相减的结果是", a-b)
return a - b
}
func sub12(a, b int) (ret int) {
fmt.Println("相减的结果是", a-b)
ret = a - b
return
}

多个返回值

1
2
3
4
5
6
7
8
9
10
11
//多个返回值
func subm1(a, b int) (int, string) {
fmt.Println("相减的结果是", a-b)
return a - b, "你妹"
}
func subm2(a, b int) (ret int, remark string) {
fmt.Println("相减的结果是", a-b)
ret = a - b
remark = "你妹"
return
}