map 中删除一个 key,它的内存会释放么?
两种情况:
- value元素为值类型时,不会释放内存
- value元素为引用类型时,会释放内存,释放该元素类型所占内存
当map置为nil时,内存被回收 [(go垃圾回收)]([Go面试]Go GC实现原理?_哔哩哔哩_bilibili)
两种情况:
当map置为nil时,内存被回收 [(go垃圾回收)]([Go面试]Go GC实现原理?_哔哩哔哩_bilibili)
在学习 go 语言项目时,遇到这样一个问题:
通过struct结构体作为一个model,数据绑定等操作都是返回一个结构体指针,那么返回一个结构体变量,或者返回一个结构体指针,他们的区别是什么?
因为二者都可以让我们生成我们所需要的结构体,那为什么还要去使用返回结构体指针呢?
对于此疑问,我做了如下实验
共同点:都是给变量分配内存;
不同点:
返回类型不同: new创建返回指针,指向分配类型的指针,分配的空间置为零,该类型的零值;make返回变量本身,分配空间后会进行初始;
分配类型:new可以为任意类型进行分配;make只能为slice,map,chan引用类型数据进行分配空间。
共同点:都是通过下标访问,并且都有容量长度;
不同点: