1、go文件运行时,代码会存放在内存的代码区。
2、一个函数被调用时【原本是作为代码放在代码区】,编译器会向系统在内存给它申请一个专门的栈区,
和其他的空间是区分开的。
因此函数内申明的变量(当然包括形参和返回参数),其作用域只在函数内,不影响到函数外;但接收的
参数是引用类型时,由于引用类型的特性,会影响到函数外的该指针指向的值;当函数内某一变量并非
传参进来,也非函数内部自己申明的,而是函数外的变量(全局变量或该函数之前的代码里的变量),
即出现了闭包情形时,则也会影响到函数外的该变量。
3、一个函数被调用执行完毕后,函数被调用时开辟的栈空间会自动被销毁【并不是说放函数代码的空间被销毁】
4、函数的形参列表和返回参数列表【指返回参数和类型一起写在大括号之前的情形,返回列表内返回值多于一
个的返回参数列表整体需加小括号;返回值和类型也可以分开,返回值写在函数内的return的后面,返回类型写在大括号前】
即就是申明了形参和返回值,函数可以没有形参;函数可以没有返回值,没有返回值的函数里无需关
键词return;有返回值的函数在被调用时,可以不去接收其全部返回值,想不接收其某个返回
值的,用占位符接收相应顺序的返回值。
5、像int、string等一样,函数也是一种数据类型。
例如 var n int 则变量是n,变量名是n,变量类型是int。
例如 func test(a int,b int)int { }
则变量是test,变量名是函数名test,变量类型是 func(int,int)int