package main
import “fmt”
func main(){
//基本数据类型在内存布局
var i int = 10
//i 的地址怎么取出来
fmt.Println(“i的地址”,&i)
//下面的 var ptr *int =&i
//1.ptr 是一个指针变量
//2.ptr 的类型 *int
//3.ptr 本身的&i
var ptr *int = &i
fmt.Println(“ptr=%v\n”,ptr)
fmt.Println(“ptr的地址时=%v”,&ptr)
fmt.Println(“ptr 只想的值=%v”,*ptr)
//var num int = 9
//fmt.Printf("num address=%v\n",&num)
//var ptr *int
//*ptr =10//这里修改时,会到num的值变化
//fmt.Println("num=",num)
//值类型和引用类型的说明
//值类型:基本数据类型int系列,float系列,bool,string、数组和结构体struct
//值类型数据,通常是在栈区
//引用类型:指针、slice切片、map、管道chan、interface等都是引用类型
//堆区引用类型,通常在堆区分配空间逃逸分析
//值类型:变量直接存储值,内存通常在栈中分配
//引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由Gc来回收
}