GO基礎之函數的高級用法

1、可變參數

支持可變長參數列表的函數能夠支持任意個傳入參數,好比fmt.Println函數就是一個支持可變長參數列表的函數。函數

package main

import "fmt"

func main() {
    fmt.Println(add())
    fmt.Println(add(1, 2, 3, 4, 5, 6))

    //使用切片做爲參數
    arr := []int{1, 2, 3, 4, 5, 6}
    fmt.Println(add(arr...))
}

//可變參數的 函數
func add(arr ...int) (result int) {
    fmt.Printf("arr->type= %T \n", arr)
    for _, value := range arr {
        result += value
    }
    return result
}

注意事項:spa

  • 一、一個函數最多隻能有一個可變參數
  • 二、若是函數有多個不一樣類型的參數,可變參數必須在後邊

 

2、函數的遞歸使用

當一個函數在其函數體內調用自身時,則稱之爲遞歸,遞歸函數對於解決數學上的問題是很是有用的,好比計算階乘,生成斐波那契數列等。
構成遞歸需具有的條件:code

  • 子問題須與原始問題爲一樣的事,且更爲簡單。
  • 不能無限制地調用自己,須要有一個出口,退出遞歸狀態
package main

import "fmt"

func main() {
    //使用切片做爲參數
    fmt.Println(factorial(10))

}

//可變參數的 函數
func factorial(num int) int {
    if num <= 0 {
        return 1
    }
    return num * factorial(num-1)
}

相關文章
相關標籤/搜索