go 函数调用机制

2019-02-26  本文已影响0人  StevenQin

函数调用机制

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)
}
上一篇 下一篇

猜你喜欢

热点阅读