I have a nil slice:
var s1 []int // len(s1) == 0, cap(s1) == 0
Which I append one element to:
s2 := append(s1, 1) // len(s2) == 1, cap(s2) == 2
Why is appending one element to a nil slice increases the capacity by 2?
Printing the slices using fmt.Printf
shows the following:
[] // s1
[1] // s2
I am also confused about why re-slicing s2[0:2]
shows a zero which was not in the original slice nor appended to it:
[1,0] // s2[0:2]
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…