Golang——指针pointer

地址:内存地址,用字节描述
指针:指向内存地址,带类型。不可操作,只读。string类型指针和int类型指针是不一样的类型。

&:取地址
*:取值

func main() {
    var a = 100
    b := &a
    fmt.Println(a)
    fmt.Printf("%T\n", b)
    fmt.Println(b)
    fmt.Println(*b)
} 
输出
100
*int
0xc0000140b0
100

new和make


func main() {
    //new用来初始化值类型的指针
    //得到一个int类型指针
    var a = new(int)
    fmt.Println(*a)  //0

    var b = new([3]int)
    (*b)[0] = 1
    b[1] = 2
    fmt.Println(*b)  //[1 2 0]

    //make用来初始化引用类型(slice、map、chan)指针的
    var c = make([]int, 5)
    fmt.Println(c)  //[0 0 0 0 0]
} 

修改数组的值

func main() {
    a := [...]int{1, 2, 3}
    fmt.Println(a)  //[1 2 3]

    modify1(a)
    fmt.Println(a)  //[1 2 3]

    modify2(&a)
    fmt.Println(a)  //[100 2 3]s
} 

func modify1(a [3]int){
    a[0] = 100
}

func modify2(a *[3]int){
    (*a)[0] = 100
    //语法糖写法
    // a[0] = 100
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。