Go Basics
Go Slices: append, len and cap
The list type you will use most in Go: grow it with append, cut it with [a:b], and watch out for shared memory.
What you'll learn
- append
- Slicing with [a:b]
- make, len and cap
numbers[1:4]
30
11
42
13
54
A growable view of an array
A slice is a view of an array that can grow. It is the list type you will use most in Go. append adds items and returns the updated slice.
numbers[1:4] takes the items at positions 1, 2 and 3. That new slice shares memory with numbers, so changing middle[0] also changes numbers[1]. make creates an empty slice with room for three items, and cap shows that room.
Key points
- append returns the updated slice.
numbers[1:4]has the items at 1, 2 and 3.- A slice shares memory with the slice it was cut from.
Runnable Go example
main.go
package main
import "fmt"
func main() {
numbers := []int{3, 1, 4}
numbers = append(numbers, 1, 5)
fmt.Println(numbers, len(numbers))
middle := numbers[1:4]
fmt.Println(middle)
middle[0] = 100 // a slice shares the array it was cut from
fmt.Println(numbers)
squares := make([]int, 0, 3)
for i := 1; i <= 3; i++ {
squares = append(squares, i*i)
}
fmt.Println(squares, len(squares), cap(squares))
for index, value := range squares {
fmt.Println(index, value)
}
}
[3 1 4 1 5] 5
[1 4 1]
[3 100 4 1 5]
[1 4 9] 3 3
0 1
1 4
2 9Practice
Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.
Finished this lesson?
Mark it as learned to track your progress.
Your progress is saved in this browser Sign in to keep it on every device.
Practice with a challenge
Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.
- Sum an Array Add up all values in a list. Easy
- Rotate Array Rotate a list to the right by some steps. Easy