简单示例帮助理解 Golang 里 pointer 的概念,code snippet 和图片来自:GeeksforGeeks。

package main

import "fmt"

func main() {

  y := 1024
  p := &y

  fmt.Println("Value stored in y before changing =", y)
  // Value stored in y before changing = 1024

  fmt.Println("Address of y =", &y)
  // Address of y = 0xc000018098

  fmt.Println("Value stored in pointer variable p =", p)
  // Value stored in pointer variable p = 0xc000018098

  fmt.Println("Value stored in y(*p) Before Changing =", *p)
  // Value stored in y(*p) Before Changing = 1024

  *p *= 2
  fmt.Println("Value stored in y(*p) after Changing =",y)
  // Value stored in y(*p) after Changing = 2048

}

Pointer 底层逻辑示例

参考:
Pointers in Golang: https://www.geeksforgeeks.org/pointers-in-golang/