Uber Go 语言编程规范:初始化 Maps

对于空的 maps,请使用make(..)初始化,并且以编程的方式填充的。这使得map的初始化在表现上不同于声明,并且可以方便地在以后添加容量大小提示(如果有的话)。

Bad

var (
  // m1 可以安全的读写
  // m2 在写时会panic
  m1 = map[T1]T2{}
  m2 map[T1]T2
)

//声明和初始化看起来非常相似

Good

var (
  // m1 可以安全的读写
  // m2 写时会panic
  m1 = make(map[T1]T2)
  m2 map[T1]T2
)

// 声明和初始化看起来是不同的

在尽可能的情况下,在使用make()初始化 map时,提供容量提示。请查阅Specifying Map Capacity Hints 获取更多信息。

另一方面,如果map包含一个固定的元素列表,则使用map字面量初始化该map。

Bad

m := make(map[T1]T2, 3)
m[k1] = v1
m[k2] = v2
m[k3] = v3

Good

m := map[T1]T2{
  k1: v1,
  k2: v2,
  k3: v3,
}

基本的经验法则是:在初始化时,添加一组固定的元素时,请使用map字面量,否则使用make(并尽可能指定容量)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamCatcher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值