函数调用机制
- 示例
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)
}
网友评论