Slices let you work with lists of items easily and efficiently. They help you handle groups of data without fixing the size in advance.
Why slices are used in Go
var s []int s = []int{1, 2, 3} s = append(s, 4)
Slices are like windows to arrays; they do not store data themselves but point to arrays.
You can add items to slices using append, which creates a bigger underlying array if needed.
var numbers []int numbers = []int{10, 20, 30}
numbers = append(numbers, 40)part := numbers[1:3]
This program shows how to create a slice, add an item, and print all items. It demonstrates slices' flexibility to grow.
package main import "fmt" func main() { // Create a slice of strings fruits := []string{"apple", "banana", "cherry"} // Add a new fruit fruits = append(fruits, "date") // Print all fruits for i, fruit := range fruits { fmt.Printf("Fruit %d: %s\n", i+1, fruit) } }
Slices are more flexible than arrays because their size can change.
When you pass a slice to a function, it shares the same underlying array, so changes affect the original data.
Slices let you work with lists that can change size.
They point to arrays but are easier to use and more flexible.
Use slices to handle dynamic data efficiently.
Practice
Why are slices preferred over arrays in Go?
Solution
Step 1: Understand array size behavior
Arrays in Go have a fixed size defined at creation and cannot grow or shrink.Step 2: Understand slice flexibility
Slices are built on arrays but can dynamically change size, making them more flexible for varying data.Final Answer:
Because slices can change size dynamically while arrays have fixed size -> Option CQuick Check:
Slice size flexibility = A [OK]
- Thinking arrays can resize dynamically
- Confusing memory usage between slices and arrays
- Believing slices are slower than arrays
Which of the following is the correct way to declare a slice of integers in Go?
var s _____
Solution
Step 1: Recall slice syntax
In Go, slices are declared with square brackets and no size: []type.Step 2: Identify correct option
[]int uses []int which is the correct syntax for a slice of integers.Final Answer:
[]int -> Option AQuick Check:
Slice declaration = []int [OK]
- Using fixed size like [5]int for slices
- Writing type after brackets like int[]
- Using invalid keywords like 'slice int'
What will be the output of this Go code?
arr := [3]int{1, 2, 3}
slice := arr[:2]
slice = append(slice, 4)
fmt.Println(arr)Solution
Step 1: Understand slice and array relation
The slice references the first two elements of arr: [1, 2], with length 2 and capacity 3.Step 2: Append behavior on slice
Appending 4 to slice: since current length 2 < capacity 3, it appends in place to the underlying array, setting arr[2] = 4. Thus, arr becomes [1 2 4].Final Answer:
[1 2 4] -> Option AQuick Check:
Append within capacity modifies underlying array = B [OK]
- Thinking append always reallocates a new array
- Expecting arr to grow to 4 elements
- Thinking append causes runtime error
Identify the error in this Go code snippet:
var s []int s[0] = 10 fmt.Println(s)
Solution
Step 1: Check slice initialization
Variable s is declared but not initialized; it is nil with length 0.Step 2: Understand assignment to s[0]
Assigning to s[0] causes runtime panic because no elements exist yet.Final Answer:
Slice s is nil and has no elements, so s[0] assignment causes runtime panic -> Option BQuick Check:
Assigning to nil slice index = runtime panic [OK]
- Assuming slice auto-expands on index assignment
- Thinking code compiles with no error
- Confusing compile error with runtime panic
You want to collect an unknown number of user scores efficiently. Which approach best uses slices?
1. Use a fixed-size array
2. Use a slice and append scores as they come
3. Use a map with indexes
4. Use a string to store scores
Solution
Step 1: Consider data size flexibility
User scores count is unknown, so fixed-size array is not suitable.Step 2: Evaluate slice usage
Slices can grow dynamically and efficiently handle unknown data sizes by appending.Step 3: Exclude other options
Maps add overhead and strings are not suitable for numeric data storage.Final Answer:
Use a slice and append scores as they come -> Option DQuick Check:
Dynamic data collection = slice append [OK]
- Choosing fixed arrays for unknown sizes
- Using strings for numeric data
- Overcomplicating with maps when slices suffice
Ready to prove it?
Pass the test and this pattern moves unknown
