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 \n", 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)
}
复制代码

 

posted @   小禾点点  阅读(567)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· Tinyfox 发生重大改版
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
点击右上角即可分享
微信分享提示