本文共 1238 字,大约阅读时间需要 4 分钟。
简介:
如图:
package mainimport "fmt"func main() { // 2) 获取变量的地址,用&,比如:var num int, 获取num的地址:&num // 分析一下基本数据类型在内存的布局 var i int = 10 // i 的地址是什么, &i fmt.Println("i的地址=", &i) // 3) 指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值 // 比如:var ptr *int =&num // 举例说明:指针在内存的布局 // 例如:var ptr *int = &i // 1、ptr 是一个指针变量 // 2、ptr 的类型 *int // 3、ptr 本身的值&i var ptr *int = &i fmt.Printf("ptr=%v\n", ptr) // 4) 获取指针类型所指向的值,使用:*,比如:var ptr *int,使用*ptr获取ptr指向的值 fmt.Printf("ptr 的地址=%v\n", &ptr) fmt.Printf("ptr 指向的值=%v", *ptr)}
定义指针变量: *指针变量名
取指针地址操作: &变量名 取值操作: *指针变量名(这里星号同定义指针变量操作,只不过两者不是一个东西,要注意区分)值类型:基本数据类型 int 系列,float 系列, bool,string、数组合结构体struct
引用类型:指针、slice切片、map、管道chan、interface 等都是引用类型
内存的栈区和堆区
内存(栈区[值类型数据,通常是在栈区], 堆区[引用类型,通常在堆区分配空间])转载地址:http://lhqwi.baihongyu.com/