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的区别的主要内容,如果未能解决你的问题,请参考以下文章