深入理解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
}