为什么要使用make()在Go中创建切片?

  • var a [4]int和之间有什么区别b := make([]int, 4)?在b可扩展,但不是a吧?但是,如果我知道我确实需要4个元素,那么数组快于切片吗?

  • 有没有之间的性能差异var d []inte := make([]int)f := make([]int, 5)如果没有第一个元素(即5个元素)的长度,是否会提供更多的性能?

  • c := make([]int, 5, 10)不会分配比我可以访问的更多的内存吗?


红颜莎娜
浏览 564回答 1
1回答

叮当猫咪

a是一个数组,并且b是一个切片。使slice与数组不同的原因是slice是指向数组的指针;它是数组的指针。slice是引用类型,这意味着如果您将一个slice分配给另一个,则两个都将引用同一个基础数组。例如,如果一个函数接受了slice参数,则对切片元素所做的更改将对调用者可见,这类似于将指针传递给基础数组(见Learning Go)。您可以轻松地使用append和copy切片。数组应该比切片快一点,但是差别不大。除非您确切知道大小,否则最好使用切片使事情变得容易。make([] type,length,Capacity),您可以估计大小和可能的容量以提高性能。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go