技术文摘
深入探析 Go 里的 new() 与 make() 函数
2024-12-30 19:56:54 小编
在 Go 语言中,new() 和 make() 函数是经常被使用但又容易被混淆的两个重要函数。深入理解它们的工作机制和适用场景对于编写高效、正确的 Go 代码至关重要。
new() 函数主要用于为值类型分配内存,并将其初始化为零值。它返回一个指向新分配内存的指针。例如,对于一个整数类型 int ,使用 new(int) 会返回一个指向新分配的零值整数的指针。
make() 函数则主要用于为切片、映射和通道这三种引用类型分配内存并进行初始化。与 new() 函数不同,make() 函数能够对创建的对象进行更细致的初始化操作。
以切片为例,使用 make([]int, 5) 不仅分配了内存,还指定了切片的长度为 5 ,并且元素都被初始化为零值。如果要指定切片的容量,还可以使用 make([]int, 5, 10) ,表示长度为 5 ,容量为 10 。
对于映射,make(map[string]int) 会创建一个空的映射,准备用于存储键值对。
通道方面,make(chan int) 创建一个无缓冲的整数通道,而 make(chan int, 5) 创建一个容量为 5 的缓冲通道。
在实际编程中,正确选择 new() 与 make() 函数取决于具体的需求。如果只是需要为值类型分配内存并获取其指针,使用 new() 即可。而对于引用类型,特别是需要对其进行特定的初始化设置时,就应该使用 make() 函数。
清晰地理解 new() 和 make() 函数的差异和适用场景,能够让我们在 Go 语言编程中更加得心应手,避免出现不必要的错误和性能问题。通过合理运用这两个函数,我们可以编写出更加高效、简洁和可靠的 Go 程序。
- 纯 CSS 打造旋转的金字塔
- 深入解析 CSS 边框(Border)的奥秘
- 前端:AJAX 请求重复使用的处理之道
- 从 Druid 迁移至 ClickHouse 的缘由
- 鸿蒙开发 AI 应用之 UI 篇(六)
- 郑爽张恒反目缘由:APP背后的风波
- React 与 DOM 之节点删除算法探秘
- Python 中 self 的四大秘密揭秘
- ES 2021 新特性抢先了解并附案例
- Spring Boot 与 Vue 前后端分离的两种文件上传方式汇总
- 2021 年,Python 开发者必知的 7 个 VS Code 扩展
- 安全工程师应晓:常见 Java 漏洞都有啥?
- 2021 年,Python 开发者必知的 7 个 VS Code 扩展
- 这些微服务的坑切勿触碰
- 14 张趣味十足的 FlexBox 图解,赶紧收藏别让它吃灰