golang func函数基础

文章发布于 2023-08-23

golang 函数使用关键字func定义,它可以指定返回值类型,函数可以返回多个值,以逗号分隔。

定义

func funcname(params)returnType {
    return ...;
}

不固定参数

封装一个加法的函数,可以无限制的添加参数进行加法运算。

func main() {
    num := myfunc(100, 243, 500, 8)
    fmt.Println(num)
}
//加法函数
func myfunc(params ...int) int {
    i := 0
    for _, value := range params {
        //fmt.Println(value)
        i += value
    }
    return i
}

不同类型参数

如果需要设置不同类型的参数,可以将参数的数据类型设置为接口interface{}类型。

func main(){
    mp := map[string]interface{}{
        "age":  10,
        "name": "kins",
    }
    myfunc2(12, "hello", mp)
}

func myfunc2(params ...interface{}) {
    for _, value := range params {
        fmt.Printf("value:%v\n", value)
    }
}

匿名函数

没有函数名称的函数。匿名函数有一个比较好的功能就是定义并调用。

sum := func(a int, b int) int {
    return a + b
}(10, 20)
fmt.Println(sum)

闭包函数

闭包函数可以捕获外部函数内的局部变量。

func sum(a int ,b int) int {
    return func() int {
        return a+b
    }
}

递归函数

在函数内部调用该函数。

func sum(a int) int {
    if a>0 {
        return a+sum(a-1)
    }else {
        return 0
    }
}

死循环函数

在函数内部调用自己,如果没有条件,则陷入死循环。

func looper(msg string) {   
    fmt.Println(msg)   
    looper(msg)
}