函数定义
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>
## 函数返回多个值(值传递)
```go
package main
import "fmt"
func swap(x, y string) (string string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
引用传递
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数
package main
import "fmt"
func main() {
a := 10
b := 20
fmt.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 int
temp = *x
*x = *y
*y = temp
}
10
20
20
10