深入理解Go系列一之指針變數
指針變數
-
基本概念
- &a,
代表 a 變數的記憶體地址
- p,
代表一個句柄引用(句柄由實例數據指針與實例類型指針兩部分組成)
,句柄的好處是,當實例數據值改變時,不需要改動實例數據指針與實例類型指針的引用 - *p,
代表句柄引用中,指向實例數據的指針(引用)
- *type,
代表實例類型指針,一般聲明一個指針變數後就不會改動類型
- &a,
-
指針記憶體布局分析
-
程式碼示例
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
}