Go语言编程快速入门:指针(上)

P27 go26.1 - 指针(上)
更新于: 2022-01-21 13:15:38

指针

  • 是一个变量
  • 指向另一个变量地址的变量
  • 安全,不会出现迷途指针(dangling pointers)

符号

  • &:地址符
    • 表示地址操作符,可以获取变量的内存地址
    • 无法获取 bool/string 等字面值的地址(&12/&"xx" 都会报错)
  • *:星号
    • *var: 用来解引用变量,取地址里的值
    • *string: 声明指针类型
package main

import "fmt"

func main() {
	answer := 12
	p1 := &answer
	fmt.Println(p1)
	fmt.Println(*p1)
}

指针类型

  • * + 指向值的类型
  • 下面的例子就是: *int

注意

  • *放在类型前:表示指针类型
  • *变在变量前:表示取指针指向的值
answer := 12
p1 := &answer
fmt.Printf("p1's type is :%T\n", p1)
// p1's type is :*int

访问数组/字段的时候,可以不进行解引用

type person struct {
  name string
  age  int32
}

xm := &person{name: "aric", age: 100}
xm.name = "feizheng"
// 等效于下面:
(*xm).name = "feizheng"
fmt.Printf("%+v", xm)

参考