深入理解Go系列一之指針變數

指針變數

  1. 基本概念

    • &a,代表 a 變數的記憶體地址
    • p,代表一個句柄引用(句柄由實例數據指針與實例類型指針兩部分組成) ,句柄的好處是,當實例數據值改變時,不需要改動實例數據指針與實例類型指針的引用
    • *p,代表句柄引用中,指向實例數據的指針(引用)
    • *type,代表實例類型指針,一般聲明一個指針變數後就不會改動類型
  2. 指針記憶體布局分析

  3. 程式碼示例

package main

import "fmt"

func main() {
	/*[01] 指針地址聲明;
	  並將a變數記憶體地址作為p 句柄引用 */
	var a = 100
	var p *int = &a
	fmt.Println(a) //100
	fmt.Println(p) //0xc000126010

	/*[02] 更改指針實例數據的值
	  句柄引用不變*/
	*p = 200
	fmt.Println(a) //200
	fmt.Println(p) //0xc000126010

	/*[03] 實例數據賦值給新變數b;
	  實例數據指針賦值給新變數c;*/
	b := a
	c := *p
	fmt.Println(p)  //0xc000126010
	fmt.Println(&b) //0xc000126030
	fmt.Println(&c) //0xc000126038

}
Tags: