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 */

}

函數用法

函數作爲值
函數定義後可作爲值來使用

閉包
閉包是匿名函數,可在動態編程中使用

方法
方法就是一個包含了接受者的函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章