Go:builtin make - 容量是否有所作为

时间:2015-02-25 13:12:59

标签: go slice

考虑想要使用精确5元素动态填充数组/切片。不多也不少。

(1)初始长度为0

的切片
sl := []string{}
for i := 0; i < 5; i++ {
    sl = append(sl, "abc")
}

(2)设置初始长度的切片,无容量

sl := make([]string, 5)
for i := 0; i < 5; i++ {
    s1[i] = "abc"
}

(3)设置初始长度,容量

的切片
sl := make([]string, 5, 5)
for i := 0; i < 5; i++ {
    sl[i] = "abc"
}

我的感觉告诉我#1不是最佳解决方案,但我想知道为什么我会选择#2而不是#3,反之亦然? (性能明智)

1 个答案:

答案 0 :(得分:3)

首先,只要您对效果有疑问,benchmarkprofile

其次,我在这里看不出任何区别。考虑到这段代码

s := make([]int, 5)
fmt.Println(cap(s))

prints 5,您的#2和#3基本相同。