package main

import "fmt"

const MAX int = 3

func main() {
    a := []int{10, 100, 200}
    var ptr [MAX]*int
    for i := 0; i < MAX; i++ {
        ptr[i] = &a[i]
        fmt.Printf("a[%d]的地址:%x\n", i, ptr[i])

    }
    for i := 0; i < MAX; i++ {
        fmt.Printf("a[%d]的值是:%d\n", i, *ptr[i])
    }
}

描述

 数组中通常多个值,所以指向数组的指针也会有多个值
ptr声明为一个指针数组,数组长度为MAX,因为ptr中的每个元素现在保存在一个指向int值的只指针,他们将存储在指针数组中
传递给函数,go语言允许传递指针到函数中,只需将函数的参数声明为指针类型。

package main

import "fmt"

func swap(x *int, y *int) {
    var temp int
    temp = *x  //复制一份x
    *x = *y   //把y给x
    *y = temp //把原来的x给y
}
func main() {
    a := 100
    b := 200
    fmt.Printf("交换之前a的值为:%d\n", a)
    fmt.Printf("交转之前b的值为:%d\n", b)
    swap(&a, &b)
    fmt.Printf("交换内存之后a的值:%d\n", a)
    fmt.Printf("交换内存之后b的值:%d\n", b)
    fmt.Println("$$$$$$$$$$$$$$$$$$$$$$$$$")
    a, b = b, a
    fmt.Println(a, b)
}

描述

 使用ptr交换,感觉直接交换来的更直接