Go内建函数(对于引用类型) new 和 make 的区别
2014-11-25 10:23
726 查看
//disgtinguish_new&makeproject
main.go
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] */ }
相关文章推荐
- Go中的make和new的区别
- 引用类型和值类型传入函数的区别
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- Go语言中new与make的区别
- 函数的返回值的类型是引用类型和非引用类型的区别
- Go语言中new()和 make()的区别详解
- C++new 和不new的区别,java引用数据类型必须new
- Go学习——new()和 make()的区别详解(转载)
- Go 语言中的 new() 和 make() 的区别
- go中new和make的区别?
- Go 语言中的 new() 和 make()的区别
- Go new和make的区别
- 使用指针类型参数和使用指针引用类型参数在函数内部用new给参数分配空间的不同结果
- Go语言中new()和 make()的区别详解
- C++中函数返回值得问题--返回类型的引用和仅返回类型的区别
- Go中的make和new的区别
- Go 语言中的 new() 和 make()的区别
- Go 语言中的 new() 和 make()的区别
- 深入讲解Go语言中函数new与make的使用和区别
- GO 内存分配new和make的区别