视频字幕
在Go语言中,make和new是两个重要的内存分配函数。make用于分配并初始化slice、map和channel,返回值本身。而new用于分配零值内存,适用于所有类型,但返回的是指针。理解它们的区别对于正确使用Go语言非常重要。
make函数专门用于创建slice、map和channel这三种引用类型。它不仅分配内存,还会进行必要的初始化。比如创建切片时会设置长度和容量,创建map时会初始化哈希表结构,创建channel时会设置缓冲区。make返回的是值本身,而不是指针。
new函数用于分配内存并返回指向该内存的指针。它适用于所有类型,包括基本类型和结构体。new分配的内存会被初始化为对应类型的零值,比如int的零值是0,string的零值是空字符串。new返回的是指针类型,需要通过解引用来访问实际的值。
让我们通过具体示例来对比make和new的区别。使用make创建切片时,返回初始化好的切片值,可以直接使用。而用new创建切片指针时,返回指向nil切片的指针,需要先初始化才能使用。make创建的map可以直接添加元素,new创建的map指针指向nil,必须先分配内存。这就是它们的根本区别。
总结一下make和new的区别和使用场景。make专门用于创建slice、map和channel,返回初始化后可直接使用的值。new适用于所有类型,返回指向零值的指针。在实际开发中,建议优先使用字面量语法,明确区分返回值类型,避免不必要的指针操作。理解这些差异有助于写出更清晰、高效的Go代码。