1.指针解释
1.1.值传递
内存的值变化
1.2.引用传递(传递地址)
地址变化图
1.3.示例
数据交换示例
points.go
package chapter06
import "fmt"
// swap 值传递
func swap(a int, b int) {
var temp int
temp = a
a = b
b = temp
}
// swap2 指针传递
func swap2(pa *int, pb *int) {
var temp int
temp = *pa // temp = main::a
*pa = *pb // main::a = main::b
*pb = temp // main::b = temp
}
// Run
func Run() {
var a int = 10
var b int = 20
// 值传递
fmt.Println("值传递....")
swap(a, b)
fmt.Println("a = ", a, ", b = ", b)
// 指针传递
fmt.Println("指针传递....")
swap2(&a, &b)
fmt.Println("a = ", a, ", b = ", b)
}
points_test.go
package chapter06
import "testing"
func TestRun(t *testing.T) {
Run()
}
执行结果
=== RUN TestRun
值传递....
a = 10 , b = 20
指针传递....
a = 20 , b = 10
--- PASS: TestRun (0.00s)
PASS
ok