Correct way to initialize empty slice

To declare an empty slice, with a non-fixed size, is it better to do:

mySlice1 := make([]int, 0)


mySlice2 := []int{}

Just wondering which one is the correct way.

1 Like

The two alternative you gave are semantically identical, and I would assume they produce the same assembly instructions.

To avoid an unnecessary allocation, in case you will end up not using the slice, you can leave it with a nil value:

var myslice []int

As written in the blog:

a nil slice is functionally equivalent to a zero-length slice, even though it points to nothing. It has length zero and can be appended to, with allocation.