golang new和make的区别
2024-08-31 07:33:57
自:http://www.cnblogs.com/ghj1976/archive/2013/02/12/2910384.html
make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。
内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:new返回指针。
内建函数make(T, args)与new(T)有着不同的功能,make只能创建slice、map和channel,并且返回一个有初始值(非零)的T类型,而不是*T。
本质来讲,导致这三个类型有所不同的原因是指向数据结构的引用在使用前必须被初始化。例如,一个slice,是一个包含指向数据(内部array)的指针、长度和容量的三项描述符;在这些项目被初始化之前,slice为nil。对于slice、map和channel来说,make初始化了内部的数据结构,填充适当的值。make返回初始化后的(非零)值。
make 是 引用类型 初始化的方法。
最新文章
- Daily Scrum Meeting 汇总
- SQL Server 子查询
- linux下C++ 插件(plugin)实现技术
- HDU 3487 Play with Chain 【Splay】
- ubuntu更新源,简单两步搞定
- Sizzle引擎执行的流程图
- SQL判断是否存在符合某条件的记录
- 子PID namespace中获取父namespace中pid的方法
- Bzoj2946:[POI2000] 最长公共子串
- 青年菜君与小农女送菜商业模式PK
- Android Studio中创建Kotlin For Android项目
- String Byte 互转
- 基于element ui的级联选择器组件实现的分类后台接口
- Springboot集成ES启动报错
- Oracle课程档案,第一天。
- 学习Java JDBC,看这篇就够了
- 安装crf++
- read 命令
- UITextView 的 return响应事件
- AlvinZH掉坑系列讲解(背包DP大作战H~M)