美文网首页
go 函数调用机制

go 函数调用机制

作者: StevenQin | 来源:发表于2019-02-26 15:19 被阅读0次

    函数调用机制

    • 示例
    package main
    import (
        "fmt"
    )
    func test(n1 int) {
        n1 = n1 + 1
        fmt.Println("test() n1=", n1)
    }
    func main() {
        n1 := 10
        //调用test
        test(n1)
        fmt.Println("main() n1=", n1)
    }
    
    • 运行说明


    总结:
    1、在调用一个函数时,会给该函数分配一个新的空间。编译器通过自身的处理让这个空间和其它栈区分开
    2、在每个函数对应的栈中,数据空间是独立的,不会混淆。(引用类型除外)
    3、当一个函数调用完毕(执行完毕)后,程序会销毁这个函数对应的栈空间

    return语句

    Go函数支持返回多个值,其它语言没有

    func 函数名 (形参列表) (返回值类型列表){
       执行语句...
       return 返回值列表
    }
    

    1、如果返回多个值时,在接收时,希望忽略某个返回值,则使用_符号
    2、如果返回值只有一个,(返回值类型列表)可以不写()

    • 案例:编写一个函数,计算两个数的,并返回两个结果
    package main
    
    import (
        "fmt"
    )
    
    func getSumAndSub(n1 int, n2 int) (int, int) {
        sum := n1 + n2
        sub := n1 - n2
        return sum, sub
    }
    func main() {
        //调用
        res1, res2 := getSumAndSub(1, 2)
        fmt.Printf("res1=%v,res2=%v\n", res1, res2)
        //只取第二个返回值 第一个用 _ 来省略
        _, res3 := getSumAndSub(7, 4)
        fmt.Println("res3=", res3)
    }
    

    相关文章

      网友评论

          本文标题:go 函数调用机制

          本文链接:https://www.haomeiwen.com/subject/ocyayqtx.html