解释golang中make的幕后?

问题描述 投票:0回答:1

下面的区别是什么?

  1. cards := deck{}
  2. cards := make(deck, 52)
  3. cards := make(deck, 0, 52)

其中,deck是一个代表卡片的字符串数组。type deck []string.

现在,我所面临的问题是,当我运行下面的 print() 的功能,在一副牌上使用 cards:= make(deck, 52)我看到它在打印卡组中的卡之前打印了52行空行,但是,当使用了 13 从上面来看,它完全可以只打印52张牌的牌组。

func (d deck) print()  {
    for _, card := range d {
        fmt.Println(fmt.Sprintf(`%s`, card))
    }
}

我不明白这个问题,我是不是遗漏了什么?谢谢!请问下面的代码有什么区别?

go
1个回答
3
投票

cards := deck{} 这将创建一个空的牌组。

cards:= make(deck, 52) 这将创建一个包含52个空元素的牌组。

cards:= make(deck, 0, 52) 这样就形成了一个容量为52的空牌。也就是说,你可以追加到 cards 52项,才需要进行新的分配。

© www.soinside.com 2019 - 2024. All rights reserved.