码迷,mamicode.com
首页 > 其他好文 > 详细

go 中new 和 make 的区别

时间:2021-03-15 10:30:11      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:可变   python   初始化   new   对象   pytho   ring   print   map   

1. new(T)返回的是指针,*T 指向T的零值(nil),并未初始化或叫实力化;


2. make (T) 返回的是初始化后的T 对象,可以直接用,只能用于slice,map,channel。但注意它是引用类型,与python中可变类型相似。


3. 值类型是int,string等类似于python的不可变类型。

 

n := make(map[string]int)
n1 := new(map[string]int)

fmt.Println(n)   // map[]
fmt.Println(&n) // &map[]
fmt.Println(n1) // &map[]
fmt.Println(*n1) // map[]
fmt.Println("sssssssssssss")
fmt.Printf("%#v \n", n) //map[string]int{}
fmt.Printf("%#v \n", &n) // &map[string]int{}
fmt.Printf("%#v \n", n1) //&map[string]int(nil)
fmt.Printf("%#v \n", *n1) //map[string]int(nil)

*n1 = map[string]int{}
(*n1)["a"] = 4
fmt.Println(*n1) // map[a:4]
fmt.Println(n1) // &map[a:4]

go 中new 和 make 的区别

标签:可变   python   初始化   new   对象   pytho   ring   print   map   

原文地址:https://www.cnblogs.com/kevin-red-heart/p/14522810.html

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