09.指针

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      

2.总结

posted @ 2021-10-08 11:07  可可逗豆  阅读(31)  评论(0)    收藏  举报