社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
简介:
如图:
package main
import "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=%vn", ptr)
// 4) 获取指针类型所指向的值,使用:*,比如:var ptr *int,使用*ptr获取ptr指向的值
fmt.Printf("ptr 的地址=%vn", &ptr)
fmt.Printf("ptr 指向的值=%v", *ptr)
}
定义指针变量: *指针变量名
取指针地址操作: &变量名
取值操作: *指针变量名(这里星号同定义指针变量操作,只不过两者不是一个东西,要注意区分)
值类型:基本数据类型 int 系列,float 系列, bool,string、数组合结构体struct
引用类型:指针、slice切片、map、管道chan、interface 等都是引用类型
内存的栈区和堆区
内存(栈区[值类型数据,通常是在栈区], 堆区[引用类型,通常在堆区分配空间])
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!