码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-01-16 16:46:46      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:类型   地址   的区别   float   对象   UNC   pack   Golan   注意   

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的区别

标签:类型   地址   的区别   float   对象   UNC   pack   Golan   注意   

原文地址:https://www.cnblogs.com/goback20170622/p/10277416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!