技术文摘
Golang 中 make 与 new 用法差异浅析
在 Golang 中,make 和 new 是两个用于分配内存和初始化值的操作,但它们在用法和用途上存在着显著的差异。
new 函数主要用于为值类型分配内存,并将其初始化为零值。例如,如果我们有一个 int 类型的变量,使用 new 分配内存后,该变量的值将被初始化为 0。以下是使用 new 分配内存的示例代码:
package main
import "fmt"
func main() {
num := new(int)
fmt.Println(*num)
}
而 make 函数则主要用于为切片、映射和通道等引用类型分配内存并进行初始化。它不仅分配内存,还会对这些数据结构进行必要的初始化操作,以确保其可以正确使用。以切片为例,使用 make 可以指定切片的长度和容量。
package main
import "fmt"
func main() {
s := make([]int, 5, 10)
fmt.Println(s)
}
在上述代码中,创建了一个长度为 5 ,容量为 10 的整数切片。
另一个重要的区别是,new 返回的是一个指向新分配内存的指针,而 make 返回的则是已经初始化好的对象本身。
在实际编程中,需要根据具体的需求来选择使用 make 还是 new 。如果只是简单地为值类型分配内存并获取零值,使用 new 即可。但如果要处理引用类型,特别是需要对其进行特定的初始化操作,如指定切片的长度和容量,或者创建一个初始状态非空的映射等,就应该使用 make 。
理解 make 与 new 的用法差异对于编写高效、正确的 Go 语言程序至关重要。只有在合适的场景下选择正确的内存分配和初始化方式,才能保证程序的性能和正确性。
TAGS: Golang 编程技巧 Golang 中的 make 用法 Golang 中的 new 用法 Golang 中 make 与 new 差异
- Go 语言开源小工具 助力程序员远程办公
- 7 个让 Code Review 高效高质的建议
- Java 实现动态脚本的方法
- 国内首款 AI 自动化漏洞挖掘系统上线公测 开发者迎福音
- Bokeh 助力 Python 绘图实现交互性
- 为何不选用 Kubernetes?
- GitHub 开源 Super Linter 以自动化满足开发者需求
- 新冠病毒促使 AR、MR 和 IoT 技术加速采用
- 轻量级分析工具可替代 Google Analytics
- 面试官:聊聊您对 HashMap 的认识
- 刷题两月,从入门斩获字节 offer,我的模板在 GitHub 获 1.2k 星
- 2020 年 Kubernetes 作为容器编排之王的 12 个有趣数据
- 4 个鲜为人知的 JavaScript 实用技巧
- 如何度过第一份编码工作的艰难阶段
- 为何 Java 开发人员要选择 Go ?