Go语言的取地址符是&,放在一个变量前使用就会返回相应变量的内存地址。
指针声明格式:
var var_name var-type
var_type为指针类型,var_name为指针变量名,
号用于指定变量是作为一个指针

  1. var ip *int // 指向整型
  2. var fp *float32 // 指向浮点型

如何使用指针

  1. 定义指针变量
  2. 为指针变量赋值
  3. 访问指针变量中指向地址的值 ```go package main import “fmt”

func main() { var a int = 20 var ip *int

  1. ip = &a // 指针变量的存储地址?
  2. fmt.Printf("a 变量的地址是: %x\n", &a)
  3. /* 指针变量的存储地址 */
  4. fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
  5. /* 使用指针访问值 */
  6. fmt.Printf("*ip 变量的值: %d\n", *ip )

}

  1. ```go
  2. a 变量的地址是: 20818a220
  3. ip变量储存的指针地址: 20818a220
  4. *ip变量的值: 20

Go空指针

当一个指针被定义后没有分配到任何变量时,它的值为nil
nil指针也成为空指针
概念上和其他语言的null,None,NULL一样,指代零值或空值

指针数组

  1. package main
  2. import "fmt"
  3. const MAX int = 3
  4. func main() {
  5. a := []int{1, 2, 3}
  6. var i int
  7. var ptr [MAX]*int
  8. for i=0;i<MAX;i++ {
  9. ptr[i] = &a[i]
  10. }
  11. for i=0;i<MAX;i++ {
  12. fmt.Printf("a[%d] = %d\n", i, *ptr[i])
  13. }
  14. }
  1. a[0] = 1
  2. a[1] = 2
  3. a[2] = 3