Golang如何使用内置make与new函数_Golang make new函数使用实践


new分配零值内存并返回指针,适用于任意类型;make初始化slice、map、channel并返回原类型,仅用于引用类型。示例:new(int)返回*int,初始为0;make(map[string]int)创建可操作的map。关键区别:new返回指针且仅清零,make返回非指针并完成初始化。错误使用如new(map)会导致nil panic。实践中优先用短变量声明替代new,而make在需预设容量时必不可少,正确使用可避免运行时错误。

golang如何使用内置make与new函数_golang make new函数使用实践

在Go语言中,makenew 是两个内置的内存分配函数,但它们的用途和行为有显著区别。理解它们的差异并正确使用,对编写高效、安全的Go代码至关重要。

new函数:为类型分配零值内存

new 的作用是为指定类型分配一片内存空间,并将该内存清零(即赋予类型的零值),然后返回指向该内存的指针。

其函数签名如下:

func new(T) *T

它适用于任何类型 T,返回一个指向新分配的、零值的 T 类型变量的指针。

示例:

ptr := new(int)<br>fmt.Println(*ptr) // 输出 0<br>*ptr = 42<br>fmt.Println(*ptr) // 输出 42

这里 new(int) 分配了一个 int 类型的内存空间,初始值为 0,返回 *int 类型的指针。

注意:new 不适用于 map、slice 或 channel,因为这些类型的零值无法直接使用(如 map 的零值是 nil,不能直接赋值)。

make函数:初始化引用类型

make 用于初始化 slice、map 和 channel 这三种引用类型,使其处于可用状态。它不返回指针,而是返回类型本身。

其函数签名:

func make(T, args...)

其中 T 必须是 slice、map 或 channel。

Picit AI Picit AI

免费AI图片编辑器、滤镜与设计工具

Picit AI 172 查看详情 Picit AI

常见用法:

  • slice:make([]int, len, cap) 创建长度为 len、容量为 cap 的切片
  • map:make(map[string]int) 创建可读写的 map
  • channel:make(chan int, 10) 创建带缓冲的 channel

示例:

slice := make([]int, 5, 10)<br>m := make(map[string]int)<br>ch := make(chan int, 5)

如果不使用 make 直接声明引用类型,它们的值为 nil,无法直接操作:

var m map[string]int<br>m["key"] = "value" // panic: assignment to entry in nil map

make 与 new 的关键区别

  • 返回类型不同:new 返回指针(*T),make 返回原类型(T)
  • 适用类型不同:new 可用于任意类型,make 仅用于 slice、map、channel
  • 初始化程度不同:new 只分配并清零,make 会进行类型特定的初始化,使值可用

举例说明:

ptr := new(map[string]int)<br>fmt.Println(ptr)     // 输出指针地址<br>fmt.Println(*ptr)   // 输出 map[string]int(nil)</br>(*ptr)["test"] = 1 // panic: assignment to entry in nil map

即使用了 new,map 仍是 nil。必须用 make 才能真正初始化:

m := make(map[string]int)<br>m["test"] = 1 // 正常工作

使用建议与实践

大多数情况下,不需要手动使用 new。Go 支持短变量声明和自动取址,更推荐直接声明变量或使用复合字面量。

比如代替 new(int):

i := 0<br>ptr := &i

对于结构体,也推荐使用字面量方式:

type Person struct { Name string }<br>p := &Person{Name: "Alice"}

而 make 在处理 slice、map、channel 时不可或缺,尤其是在需要预设容量或缓冲大小时,合理使用 make 能提升性能。

基本上就这些。掌握 make 和 new 的区别,能避免常见 nil 指针或运行时 panic,写出更稳健的 Go 程序。

以上就是Golang如何使用内置make与new函数_Golang make new函数使用实践的详细内容,更多请关注其它相关文章!


# 推荐使用  # 中高端网站建设定制  # 广安抖音seo工具  # 辽宁展示型网站建设语言  # 鹤壁知名网站优化  # 烟台网站建设的标准要求  # 网站优化指数是什么  # 开封关键词营销推广软件  # 南宁网络推广网络营销公司  # 常德seo公司找1火星  # 赌博网站推广广告词  # 相关文章  # go  # 不需要  # 是在  # 滤镜  # 值为  # 清零  # 适用于  # 如何使用  # 器中  # 区别  # go语言  # golang 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: TikTok视频播放中断怎么办 TikTok播放异常修复方法  微信客户端如何找回密码_微信客户端忘记密码找回方法  VS Code的时间线(Timeline)视图:您的代码时光机  解决J*aScript动态图片上传中ID重复问题:在同一页面显示多张独立图片  《异星探险家》古怪的物品作用介绍  我的世界游戏平台入口 我的世界官方官网直达链接  阿里云共享相册入口在哪  如何配置VS Code作为您Git操作的默认编辑器  解决Go encoding/json 将JSON大数字解析为浮点数的问题  网页版网易云音乐入口_网易云音乐在线官网登录  修复UI元素交互障碍:从“开始”按钮到信息框的平滑过渡实现  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  B站怎么快速升级 B站用户等级提升攻略【详解】  《环球网校》设置报考省市方法  QQ邮箱PC端登录页面_QQ邮箱网页版登录界面  不吃碳水化合物是健康减肥的好办法吗  12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧  《撕歌》会员开通方法  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  《米姆米姆哈》米姆获取及技能攻略  研招网官方网站招生平台入口_中国研究生招生信息网官网登录  《下一站江湖2》武器获取方法  C++怎么实现一个红黑树_C++高级数据结构与平衡二叉搜索树  手机耗电快是什么原因 延长手机电池续航时间的设置方法【详解】  realme 10 Pro息屏方案_realme 10 Pro省电策略  《顺丰同城骑士》查看我的技能方法  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  mysql如何回滚事务_mysql ROLLBACK事务回滚方法  动漫之家观看全集库 动漫之家免费资源网地址  vivo手机视频通话美颜怎么设置_vivo视频通话美颜开启方法  小红书网页版首页入口 小红书网页版电脑端官方登录链接  C++ static关键字作用_C++静态成员变量与静态函数  《杖剑传说》食谱大全  Linux如何自动分析系统异常日志_Linux日志智能检测  AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例  抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系  win11关机几秒又自己开机 Win11关机自动重启问题修复  怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】  win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】  Flash AS3.0简易相册制作  向日葵客户端怎么进行语音通话_向日葵客户端语音通话功能使用方法  HTML中多图片上传与预览:解决ID冲突的专业指南  Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改  繁花漫画使用教程  京东快递包裹信息查询入口 京东快递官方查询平台入口  解决jQuery多计算器输入字段冲突的教程  Go Goroutine调度与并发执行深度解析  React应用中Commerce.js数据加载与状态管理最佳实践  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  Excel宏怎么删除_Excel中删除宏的详细操作流程 

 2025-11-28

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.