zoukankan      html  css  js  c++  java
  • GO基础之函数的高级用法

    一、可变参数

    支持可变长参数列表的函数可以支持任意个传入参数,比如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 
    ", arr)
        for _, value := range arr {
            result += value
        }
        return result
    }

    注意事项:

    • 1、一个函数最多只能有一个可变参数
    • 2、如果函数有多个不同类型的参数,可变参数必须在后边

    二、函数的递归使用

    当一个函数在其函数体内调用自身时,则称之为递归,递归函数对于解决数学上的问题是非常有用的,比如计算阶乘,生成斐波那契数列等。
    构成递归需具备的条件:

    • 子问题须与原始问题为同样的事,且更为简单。
    • 不能无限制地调用本身,需要有一个出口,退出递归状态
    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)
    }

  • 相关阅读:
    hadoop集群配置和测试
    ubuntu 12.04安装jdk
    springboot集成mybatis
    redis连接数据库
    生产随机数
    关于字符串统计次数
    闲的无聊写了一个房租的后台
    简单的死锁
    java集合类总结(转)
    mybatis框架的搭建
  • 原文地址:https://www.cnblogs.com/jalja/p/11774650.html
Copyright © 2011-2022 走看看