普通函数-函数声明调用的内存分析
# 2. 函数声明调用的内存分析
# 通过示例感受内存分析(示例一)
- 没有真正的交换,通过在函数中创建临时变量,在对值进行赋值。
package main
import "fmt"
// 自定义函数:功能:交换两个数
func exchangeNum(num1 int, num2 int) (int, int) {
var t int
t = num1
num1 = num2
num2 = t
return num1, num2
}
func main() {
//调用函数:交换10和20
// 示例一:没有真正的交换,通过在函数中创建临时变量,在对值进行赋值。(没有真正的交换)
var num1 int = 10
var num2 int = 20
fmt.Printf("交换前的两个数: num1 = %v,num2 = %v \n", num1, num2)
num1, num2 = exchangeNum(num1, num2)
fmt.Printf("交换后的两个数: num1 = %v,num2 = %v \n", num1, num2)
}
/*
交换前的两个数: num1 = 10,num2 = 20
交换后的两个数: num1 = 20,num2 = 10
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 通过示例感受内存分析(示例二)
- 通过指针类型在原有的变量地址改变它的值
package main
import "fmt"
// 通过指针多值交换
func parExchangeNum(num1 *int, num2 *int) {
*num1, *num2 = *num2, *num1
}
func main() {
//调用函数:交换10和20
var num1 int = 10
var num2 int = 20
// 示例二:通过指针类型在原有的变量地址改变它的值
fmt.Printf("交换前的两个数: num1 = %v,num2 = %v \n", num1, num2)
parExchangeNum(&num1, &num2)
fmt.Printf("交换后的两个数: num1 = %v,num2 = %v \n", num1, num2)
}
/*
交换前的两个数: num1 = 20,num2 = 10
交换后的两个数: num1 = 10,num2 = 20
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
编辑 (opens new window)