Difference Between Array and Slice in Golang

1. Introduction

In Go (Golang), understanding the distinction between arrays and slices is crucial for effective programming. An array is a sequence of elements of a single type, of fixed length. In contrast, a slice is a dynamically sized, flexible view of the elements of an array. In practice, slices are much more common than arrays due to their flexibility.

2. Key Points

1. Length: Arrays have a fixed length, and slices have a dynamic length.

2. Declaration: Arrays are declared with a fixed size, and slices are declared without specifying the size.

3. Capacity: Array capacity is fixed to its length, and slice capacity can grow dynamically.

4. Underlying Structure: Slices are backed by arrays and provide a view into an array.

3. Differences

Characteristic Array Slice
Length Fixed Dynamic
Declaration With fixed size Without specifying size
Capacity Fixed to length Can grow dynamically
Underlying Structure Self-contained Backed by arrays

4. Example

// Example of an Array
var myArray [3]int = [3]int{1, 2, 3}

// Example of a Slice
mySlice := []int{1, 2, 3}


Array Output:
[1 2 3]
Slice Output:
[1 2 3]


1. myArray is an array with a fixed size of 3, initialized with specific values.

2. mySlice is a slice that starts with the same values, but can grow or shrink dynamically.

5. When to use?

- Use arrays when you need a fixed number of elements and the size will not change.

- Use slices for most situations where you need a flexible-size array-like data structure, especially when the number of elements can change during runtime.