//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] */ }
有疑问加站长微信联系(非本文作者)