新闻中心
Golang new与make在创建数据结构时有何区别_Golang new make使用场景与差异说明
new返回指向零值的指针,适用于所有类型;make用于初始化slice、map、channel并返回可用实例。1. new(T)分配内存并返回*T,仅置零;2. make(T, args)构造可操作的数据结构,返回T本身;3. 对复合类型如map或slice用make,否则需额外初始化。

在 Golang 中,new 和 make 都用于内存分配,但它们的使用场景和行为有本质区别。理解它们的差异对正确初始化数据结构至关重要。
new 的作用与特点
new 是一个内置函数,用于为指定类型的变量分配内存,并返回指向该类型零值的指针。它适用于所有类型,但不会进行特殊初始化。
• 调用 new(T) 会分配一块内存,存储类型 T 的零值。• 返回 *T 类型的指针,即指向 T 零值的地址。
• 不支持 slice、map 和 channel 的初始化,因为这些类型需要额外的结构信息(如长度、容量、底层数据结构)。
例如:
GoEnhance
全能AI视频制作平台:通过GoEnhance AI让视频创作变得比以往任何时候都更简单。
347
查看详情
ptr := new(int) *ptr = 10 // ptr 指向一个 int 类型的零值(初始为 0),之后被赋值为 10
make 的作用与特点
make 也是一个内置函数,但它仅用于初始化三种内建引用类型:slice、map 和 channel。它的目的是创建并初始化这些类型的实例,使其可以立即使用。
• make(T, args) 返回类型 T 本身,而不是指针。• 为 slice 分配底层数组并设置长度和容量。
• 为 map 创建哈希表结构以便存储键值对。
• 为 channel 设置缓冲区(可选)并准备通信机制。
例如:
slice := make([]int, 5) // 长度为5的切片,元素均为0 m := make(map[string]int) // 空的 map,可直接插入键值对 ch := make(chan int, 3) // 带缓冲的 channel
使用场景对比
选择 new 还是 make,取决于你要初始化的数据类型。
• 使用 new:当你需要一个指向任意类型零值的指针,尤其是结构体或基本类型时。• 使用 make:当你需要初始化 slice、map 或 channel 并马上使用其操作(如 append、写入 map、发送接收 channel)时。
常见误区:
• 对 map 使用 new:var m = new(map[string]int) 得到的是 *map[string]int,但该指针指向的 map 仍是 nil,无法直接赋值,必须配合 make 使用或改用 make。• 对 slice 使用 new:new([]int) 返回的切片为 nil,不能直接 append,需先 make。
总结差异
• 返回类型不同:new 返回指针(*T),make 返回原始类型(T)。• 支持类型不同:new 支持所有类型;make 仅支持 slice、map、channel。
• 初始化程度不同:new 只分配内存并置零;make 会构造可用的数据结构。
基本上就这些。new 更通用但基础,make 更专一但实用。根据类型选择合适的方式,才能写出安全高效的 Go 代码。
以上就是Golang new与make在创建数据结构时有何区别_Golang new make使用场景与差异说明的详细内容,更多请关注其它相关文章!
# 你要
# 本溪网站优化多少钱
# 推广网站的四个阶段
# 网站内部优化判断题
# 优化网站静态资源
# 有关营销推广的文献
# 信阳短视频seo矩阵
# 郴州企业营销推广公司排名
# 网站营销建设的总结
# 搜狗seo优化技巧搜狗
# 深圳seo自然搜索优化排名
# 相关文章
# 均为
# go
# 尤其是
# 是一个
# 的是
# 适用于
# 当你
# 键值
# 数据结构
# 键值对
# 区别
# app
# golang
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
Python字典中优雅地迭代剩余元素的方法
Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】
cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法
抖音从哪里进入网页版_抖音官方入口链接
为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法
QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道
MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId
QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录
c++中的std::basic_string的SSO优化_c++短字符串优化深度解析
小米14应用无法联网原因分析_小米14网络权限修复
C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器
C++如何比较两个字符串_C++ string compare函数与操作符对比
如何使用Go和Martini动态服务解码后的图片
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法
知音漫客官网漫画下载_知音漫客网页版阅读记录
高德地图沿途添加点失败如何解决 高德多点规划方法
LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置
拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达
TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程
如何将HTML表格多行数据保存到Google Sheets
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
深入理解J*aScript中的B样条曲线与节点向量生成
Lar*el 8 多关键词数据库搜索优化实践
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧
ACG动漫视频网入口 ACG动漫*免费正版观看地址
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率
Shopware订单对象中获取产品自定义字段的正确方法
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
微信网页版官方快速登录入口 微信网页版网页版账号直达
微信网页版官方入口直达 微信网页版网页版登录使用方法
192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台
4399网页游戏电脑版全新入口 4399电脑端在线玩指南
利用5118提升短视频内容效果_5118短视频关键词优化方法
深入理解J*a链表中的IPosition接口与使用
顺丰快递查单号物流信息 顺丰快递小程序查询入口
深入理解rpy2中的类型转换:优化Python对象到R矩阵的映射


2025-11-29
浏览次数:次
返回列表
值为 10