Golang - 值类型和引用类型

1、概述

1)值类型:int系列,float系列,bool,string,array数组和struct结构体

2)引用类型:指针,slice切片,map,chan管道,interface接口等

2、使用特点

1)、值类型:变量直接存储值,内存通常在中分配。

 

2)、引用类型:变量存储的是一个地址,这个地址对应的空间才是真正的存储数据(值),内存通常在上分配,当没有任何变量引用这个地址时,改地址对应的数据空间就成为了一个垃圾,由GC来回收。

 3、栈区和堆区的区别:

4、堆(heap)的解释:

  堆也是一种数据结构。堆在内存分配中类似往一个房间里摆放各种家具,家具尺寸有大有小。分配内存时,需要找一块足够装下家具的空间再摆放家具。经过反复摆放和腾空家具后,房间里的空间会变得乱七八糟,此时再往空间里摆放家具会存在虽然有足够的空间,但各空间分布在不同的区域,无法有一段连续的空间来摆放家具的问题。此时,内存分配器就需要对这些空间进行调整优化。

  堆分配内存和栈相比,堆适合不可预知大小的内存分配。但是为此付出的代价是分配速度较慢,而且会形成内存碎片。

posted @   李若盛开  阅读(247)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示