技术文摘
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 差异
- 如何防止多个背景样式叠加
- 浏览器中 SVG 尺寸的确定方式
- 网站彩带效果由哪个JS库实现
- Element UI 中 index.css 文件正确引入项目及解决图标不显示问题的方法
- 打印预览与实际打印样式不一致的解决方法
- JavaScript随机数生成:不同范围与类型随机数的生成方法
- Nuxt3 中怎样给选中链接添加高亮状态
- CSS 中 box-shadow 报错:rgb() 函数设置透明度为何失效
- 优化后台管理界面DOM结构的方法
- B站首页Banner的Blob链接制作及下载方法
- 借助 CSS 伪类实现 Span 按钮点击后高亮选中的方法
- XMLHttpRequest 数据发送限制:HTML 标记需空格的原因
- 解决不同屏幕分辨率下元素布局问题防止按钮换行的方法
- Vue.js中动态变更标签样式无效的原因
- JavaScript 中 return 有哪些巧妙用法