函数定义
func function_name([parameter list]) [return_types] {函数体}
- func:函数由func开始声明
- function_name:函数名称,参数列表和返回值类型构成了函数签名
- parameter list:参数列表
- return_types:返回类型,函数返回一列值。return_types是该列值的数据类型,非必须
- 函数体
函数调用
```go package main import “fmt”
func main() { a := 10 b := 20 var ret int ret = max(a, b) fmt.Printf(“Max num is : %d\n”, ret) }
func max(x, y int) int { var ret int if x > y { ret = x } else { ret = y } return ret }
<a name="sbH8t"></a>## 函数返回多个值(值传递)```gopackage mainimport "fmt"func swap(x, y string) (string string) {return y, x}func main() {a, b := swap("hello", "world")fmt.Println(a, b)}
引用传递
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数
package mainimport "fmt"func main() {a := 10b := 20fmt.Printf("交换前,a 的值 : %d\n", a )fmt.Printf("交换前,b 的值 : %d\n", b )/* 调用swap函数* &a 指向a指针,变量a的地址* &b 指向b指针,变量b的地址*/swap(&a, &b)fmt.Printf("交换后,a 的值 : %d\n", a )fmt.Printf("交换后,b 的值 : %d\n", b )}func swap(x *int, y *int) {var temp inttemp = *x*x = *y*y = temp}
10
20
20
10
