您的当前位置:首页正文

Golang的make和new的区别?

2024-11-25 来源:个人技术集锦

在Go语言中,makenew是两个用于创建对象的内建函数,它们有不同的用途和行为。

  1. makemake函数用于创建切片、映射和通道等引用类型的对象。它的语法是:make(T, args...),其中T表示要创建的对象的类型,args...表示传递给创建对象的参数。make函数会分配内存并初始化对象,返回一个已经准备好使用的引用类型对象。例如:
slice := make([]int, 5)          // 创建长度为5的整型切片
dictionary := make(map[string]int) // 创建字符串到整型的映射
channel := make(chan int)          // 创建一个整型通道
  1. newnew函数用于创建值类型的对象,并返回对象的指针。它的语法是:new(T),其中T表示要创建的对象的类型。new函数会分配内存,初始化该类型的零值,并返回指向该类型的指针。例如:
var count *int
count = new(int) // 创建一个整型对象,并将指针赋值给count变量

使用new函数创建的对象是该类型的指针,需要通过解引用(*)操作符访问该对象的值。new函数适用于创建结构体、基本类型(如整型、浮点型等)的对象。

总结:

  • make函数用于创建切片、映射和通道等引用类型的对象,并返回一个已初始化的对象。
  • new函数用于创建值类型的对象,并返回一个指向该类型的指针,指向的对象会被初始化为零值。

需要根据具体的需求和对象类型选择使用make还是new函数。

显示全文