函数定义

  1. func function_name([parameter list]) [return_types] {
  2. 函数体
  3. }
  • 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 }

  1. <a name="sbH8t"></a>
  2. ## 函数返回多个值(值传递)
  3. ```go
  4. package main
  5. import "fmt"
  6. func swap(x, y string) (string string) {
  7. return y, x
  8. }
  9. func main() {
  10. a, b := swap("hello", "world")
  11. fmt.Println(a, b)
  12. }

引用传递

引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数

  1. package main
  2. import "fmt"
  3. func main() {
  4. a := 10
  5. b := 20
  6. fmt.Printf("交换前,a 的值 : %d\n", a )
  7. fmt.Printf("交换前,b 的值 : %d\n", b )
  8. /* 调用swap函数
  9. * &a 指向a指针,变量a的地址
  10. * &b 指向b指针,变量b的地址
  11. */
  12. swap(&a, &b)
  13. fmt.Printf("交换后,a 的值 : %d\n", a )
  14. fmt.Printf("交换后,b 的值 : %d\n", b )
  15. }
  16. func swap(x *int, y *int) {
  17. var temp int
  18. temp = *x
  19. *x = *y
  20. *y = temp
  21. }

10
20
20
10