您的位置:首页 > 编程语言 > Go语言

Go内建函数(对于引用类型) new 和 make 的区别

2014-11-25 10:23 726 查看
//disgtinguish_new&makeproject
main.go

/*

引用类型 : slice channel map

new 和 make 创建引用类型的区别


new  会根据类型的大小,分配该大小的零值空间,然后返回该空间首地址.

make 会被编译器翻译成具体的创建函数,由其分配内存和初始化成员变量,返回对象,而非指针、


*/

package main

import (
. "fmt"
)

func main() {

var arr = []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
Println(arr)

var slice1 = make([]int, 5, 10) // make 创建返回的是 slice 对象
Println(slice1)

slice2 := new([]int) // new 创建返回的是 slice 指针
(*slice2) = append((*slice2), 1)
Println(*slice2)

/* 编译结果
[1 2 3 4 5 6 7 8 9]
[0 0 0 0 0]
[1]
*/

var map1 = make(map[string]int, 1000)
Println(map1)

map2 := new(map[string]int)
(*map2) = map[string]int{}
(*map2)["xuhe"] = 4
Println((*map2))

/* 编译结果
map[]
map[xuhe:4]
*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: