Go函数

函数声明

func  函数名(参数) 返回类型 {

    函数体

}  

函数调用

包名.函数名(参数)      //如果调用包内的函数则直接 函数名.(参数)

package main

func main() {

   a := 1

   b := 2

   var c int

   c = sum(a, b)

   println(c)             //3

   str1, str2, str3 := swap("bson", "json", "xml")

   println(str1, str2, str3)      //xml json bson

}

func sum(num1, num2 int) int {

   var res int

   res = num1 + num2

   return res

}

func swap(x, y, z string) (string, string, string) {

   return z, y, x

}

函数参数
值传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

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

上述的示例就是按值传递,下面示例演示了引用传递

package main

import "fmt"

func main() {

   /* 定义局部变量 */

   var a int = 100

   var b int = 200

   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 地址上的值 */

   *x = *y      /* 将 y 值赋给 x */

   *y = temp    /* 将 temp 值赋给 y */

}

函数用法

函数作为值
函数定义后可作为值来使用

闭包
闭包是匿名函数,可在动态编程中使用

方法
方法就是一个包含了接受者的函数

你可能感兴趣的:(Go函数)