Go语言学习笔记(6)——指针

指  针

指针 存储另一个变量的内存地址的变量; Go语言的取地址符号也是&

1. 声明指针: var needle_name *type

      var b int = 10

      var a *int = &b    // 整型指针a,指向变量b(即存储b的内存地址)

   使用 *a 获得其所指向的变量b的值10, 可以通过指针改变变量的值: *a++, 然后b的值就变成了11.

2. 结构体的定义和使用:

type name int8 // 结构体中成员变量的类型可以在结构体定义外指定
type first struct { // 这里的结构体名为first
    a int
    b bool     // bool类型的变量默认值为false
    name }

 var a = first{1, false, 2}   // 定义first结构体类型的变量a
 a.a = 0
 var b *first = &a             //定义first类型的指针b        

    注意: 此时b.a和(*b).a都可以获取a.a的值 0    !
    &a的打印结果为: &{0 false 2}        //就是没有逗号comma分隔符!!!  

 

3. 当一个指针被声明但却没有为其赋值时,它就是一个空指针,值为 nil; 一个指针变量通常缩写为 ptr

 

4. 指针作为参数传递: 因为指针存的是一个变量的地址,所以使用实参指针和形参指针都可以改变变量的值。 虽然可以将数组的地址传递给一个函数的参数(指针数组)并对其进行修改,但这并不是实现这一目标的惯用方法。 我们有切片!!!

 

5. 指针的指针: var ptr **int   // 则指针 ptr 可以存储另一个指针的地址 (对应 ptr)

posted @ 2019-07-25 10:59  `'手可摘星辰  阅读(140)  评论(0编辑  收藏  举报