Go:内置 make - 容量是否有所不同

Go: builtin make - does the capacity make a difference

考虑用 5 个元素动态填充 array/slice。不多也不少。

(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,反之亦然? (性能方面)

首先,每当您对性能有疑问时,benchmark and profile

其次,我看不出这里有什么不同。考虑到这段代码

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

prints 5,你的#2和#3基本一样