go语言如何使用new构造Map

文章讨论了在Go语言中创建map时,为什么推荐使用`make`而不是`new`函数。`new`函数返回一个未初始化的map指针,需要额外的初始化步骤,而`make`则可以直接创建并初始化map,更为便捷。示例展示了如何使用`new`配合`make`初始化map以及其复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提阅读:

不要使用 new,永远用 make 来构造 map

注意 如果你错误的使用 new () 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:

mapCreated := new(map[string]float32) 接下来当我们调用:mapCreated[“key1”] =
4.5 的时候,编译器会报错:

invalid operation: mapCreated[“key1”] (index of type
*map[string]float32).

总结为什么不使用 new 原因:

new 函数可以创建一个空的 map,但是这个 map 是一个空的 map 指针。因此,在使用这个 map 前需要先进行初始化。

如何用 new 创建 Map

使用 new 函数创建 map 是可能的,但是需要显式地将指针分配给一个 map 变量,同时还需要手动初始化这个 map。下面是一个使用 new 函数创建并初始化一个 map 的示例:

mapCreated := new(map[string]float32)
*mapCreated = make(map[string]float32)
(*mapCreated)["key1"] = 4.5

需要注意的是,上述代码中的 mapCreated 是一个指向 map[string]float32 类型的指针,因此需要使用 * 操作符来访问指针所指向的实际 map 值。另外,我们还需要在使用 new 函数后,手动使用 make 函数来初始化这个 map。最后,我们可以通过解引用指针并使用键值对语法来对 map 进行赋值操作。

总之,使用 new 函数创建 map 是可能的,但是需要手动进行初始化和赋值操作,比较麻烦。所以建议直接使用 make 函数创建并初始化 map,这样更加方便和直观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值