golang指针能够这样理解:自己为一个整型常量,但因为其声明时为指针,所以拥有了特殊的能力,即在其前增长 * ,便可直接访问内存编号为该整型常量的数据。而对于某个定义的常量,在前面加 & ,也能够得到数据的内存编号。
当咱们定义结构体指针时,问题出现了:golang

type name int8
type first struct {
    a int
    b bool
    name
}
func main(){
    var type1 = first{1, false, 2}
    var type_pointer *first = &type1
    fmt.Println(type_pointer)
    }
&{1 false 2}

所以,咱们进行以下打印:code

fmt.Println(&type_pointer.a, type_pointer.a, &type_pointer, (*type_pointer).a)
0x110120f8 1 0x11006128 1

能够这样解释:
&type_pointer.a:等同于&(*type_pointer).a
type_pointer.a:等同于(*type_pointer).a
上面这两种能够理解为golang语言的简便写法写法(若是不这么理解无法解释输出),不推荐这样写,
&type_pointer:指针自己的内存地址
(*type_pointer).a:指针指向的结构体,该结构体内部的a数据数据

*type_pointer.a