GO编程(打卡)-Task07: 函数

函数

  • 相关用法

    package main
    
    import (
    	"fmt"
    	"errors"
    )
    
    // 函数定义
    func getSum(num1,num2 int) int{
    	return num1+num2
    }
    // 变长参数 放在函数参数列表的最后一个
    func min(nums ...int) int {
    	if len(nums) == 0{
    		return 0
    	}
    	min := nums[0]
    	for _, v := range nums{
    		if v < min{
    			min = v
    		}
    	}
    	return min
    }
    // 多返回值 命名返回值(可使用不带参数的return语句)
    func div(a,b float64)(result float64,err error){
    	if b==0{
    		return 0,errors.New("被除数不能为0")
    	}
    	result = a/b
    	return 
    }
    // 闭包实现斐波那契数列
    func fibonacci() func() int{
    	n1,n2 := 0,1
    	return func() int{
    		n := n2
    		n2 = n1 + n2
    		n1 = n
    		return n2
    	}
    }
    func main() {
        fmt.Println("定义函数,求参数1,2的和:",getSum(1,2))
    
        myslice := []int{3,6,8,1,3,5,10}
        fmt.Println("变长参数函数,求最小值:",min(myslice...))
    
        res,err := div(3,0)
        fmt.Println("多返回值函数,求商:",res,err)
    
        // 匿名函数
        myfunc := func() string{
        	return "hello world"
        }
        fmt.Println("匿名函数,输出文本",myfunc())
    
        myfunc1 := fibonacci()
        fmt.Println("闭包函数,实现斐波那契数列",myfunc1())
        fmt.Println("闭包函数,实现斐波那契数列",myfunc1())
        fmt.Println("闭包函数,实现斐波那契数列",myfunc1())
        fmt.Println("闭包函数,实现斐波那契数列",myfunc1())
    }  
    

  • ...的用法

    • 用于函数有多个不定参数的情况

    • slice可以被打散进行传递,即一个元素一个元素的传递

参考

https://github.com/datawhalechina/go-talent/blob/master/6.函数.md

posted @ 2020-12-18 00:35  柔南青空  阅读(69)  评论(0编辑  收藏  举报