方法: 完成一个功能的代码或集合。
大致过程:给方法必要的输入,方法返回结果。
函数调用机制的底层分析:
栈区:基本数据类型一般分配到栈区,编译器存在一个逃逸分析。
堆区:引用数据类型一般分配到堆区,编译器存在一个逃逸分析。
代码区:存放代码的内存区域
通过一个调用过程,深刻理解函数调用都做了什么:
package main
import "fmt"
func calcu (a float64,b float64) (float64,float64) {
plus := a + b
minus := a - b
return plus,minus
}
func main() {
/*
第一步 main是一切程序的入口,首先现在内存栈区开辟一块空间存储变量
a=5 b=3 都是基本变量,一般存在内存栈区
*/
var (
a float64 = 5
b float64 = 3
)
/*
第二步 调用函数,将两个变量的值传入函数中,系统在内存栈区开辟另一块儿空间放入被调用函数,
这个地方的函数的内存与main程序的内存空间完全是两个用户空间,这也就是说为何被调用函数如果
没有返回值,就是两个完全不相干的函数调用,也就失去了调用意义,调用结束返回后,return结束
被调用函数,并且返回值,编译器就会将这部分垃圾回收,回到main()中继续走完
*/
max, min := ca