1. new(T)返回的是指针,*T 指向T的零值(nil),并未初始化或叫实力化;2. make (T) 返回的是初始化后的T 对象,可以直接用,只能用于slice,map,channel。但注意它是引用类型,与python中可变类型相似。3. ...

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


基础教程推荐
猜你喜欢
- R语言 ggplot2改变柱状图的顺序操作 2022-11-17
- R语言-修改(替换)因子变量的元素操作 2022-11-26
- ruby on rails validates 2023-09-22
- Swift初始化器与可选链的使用方法介绍 2023-07-08
- 浅析ELF转二进制允许把 Binary 文件加载到任意位置 2023-07-06
- win10下使用virtualbox + vagrant配置ruby开发机环境 2023-07-23
- Swift中重写和重载的使用与对比总结 2023-07-05
- Ruby3多线程并行Ractor使用方法详解 2023-07-23
- R语言绘制折线图实例分析 2022-11-21
- ruby-on-rails-为使用Rails 4,nginx和乘客的用户设置自定义域 2023-09-21