zoukankan      html  css  js  c++  java
  • 函数调用机制

    为了让大家更好的理解函数调用过程,看两个案例,并画出示意图,这个很重要。
    1)传入一个数+1 test

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

    2)计算两个数,并返回 getSum

    //一个函数 test
    func test(n1 int) {
      n1 += 1
      fmt.Println("test() n1=", n1) //? 输出结果=11
    }

    //一个函数 getSum
    func getSum(n1 int, n2 int) int {
      sum := n1 + n2
      fmt.Println("getSum sum = ", sum)
      //当函数有return语句时,就所将结果返回给调用者
      //即谁调用我,就返回给谁
      return sum
      //也可以写成 return n1 + n2
    }

    func main() {
      var n1 int = 10
      //调用test
      test(n1)
      fmt.Println("main() n1=", n1) //? 输出结果= ?

      sum := getSum(10, 20)
      fmt.Println("main sum = ", sum)
    }

    return语句:

    基本语法:
    Go函数支持返回多个值,这一点是其它编程语言没有的。
    func 函数名 (形参列表) (返回值类型列表) {
      语句...
      return 返回值列表
    }

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

    案例1:

    //声明函数 getSumAndSub
    func getSumAndSub(n1 int, n2 int) (int, int) {
      sum := n1 + n2
      sub := n1 - n2
      return sum, sub
    }

    func main() {

      //调用getSumAndSub
      res1, res2 := getSumAndSub(1, 2)
      fmt.Printf("res1 = %v , res2 = %v", res1, res2)
    }


    案例2:

    细节说明:希望忽略某个返回值, 则使用 _ 符号表示占位忽略


    //声明函数 getSumAndSub
    func getSumAndSub(n1 int, n2 int) (int, int) {
      sum := n1 + n2
      sub := n1 - n2
      return sum, sub
    }

    func main() {
      res3, _ := getSumAndSub(2, 3)
      fmt.Printf("res3 = %v", res3)
    }

  • 相关阅读:
    Linux之硬件资源管理
    Linux之vi 文本编辑命令
    [2]窗口程序的创建
    [1]cs辅助项目分解
    1.3 Windows操作系统
    (PYG)学习去除软件自效验
    CSUST 4006-你真的会树套树套树吗?(贪心|dp)
    CSUST 4003-你真的会泡面吗?(优先队列模拟)
    2020牛客暑期多校第八场I-Interesting Computer Game(离散化+并查集)
    2020牛客暑期多校K-Kabaleo Lite(贪心)
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11343482.html
Copyright © 2011-2022 走看看