Go语言中内建函数new和make的区别

Posted goback20170622

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言中内建函数new和make的区别相关的知识,希望对你有一定的参考价值。

Golang中有两个负责内存分配的内建函数:new和make.二者有明显区别.

new:new函数用于初始化一个对象,并返回该对象的首地址,可以用于初始化任何类型

make:make函数返回一个初始化的实例,只能用于初始化map,slice,channel三种类型

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main(){
 6     a := new([]int)
 7     fmt.Println(a) //a本身是一个地址,输出&[]
 8     b := make([]int,1)
 9     fmt.Println(b) //b本身是一个数组,输出[0]
10 }

需要注意的是使用new初始化一个对象只能进行默认初始化

package main
import
"fmt" type Rect struct{ x,y float64 width,height float64 } func main{ c := new(Rect) fmt.Println(c) //输出&{0,0,0,0},进行默认初始化

rect1 := &Rect{0,0,100,200}
fmt.Println(rect1) //输出&{0,0,100,200}
}

 







以上是关于Go语言中内建函数new和make的区别的主要内容,如果未能解决你的问题,请参考以下文章

理解GO语言make 和 new 的区别

go语言学习笔记——new和make的区别

go语言学习笔记——new和make的区别

go语言学习笔记——new和make的区别

Go make 和 new的区别

go语言中new与make的使用和区别