📖 Scenario: You are working on a simple program that helps reverse the order of numbers in a list. This is useful when you want to see the list backwards, like reading a list of tasks from last to first.
🎯 Goal: Build a Go program that creates an array of numbers, sets up a helper variable for the array length, reverses the array in place, and then prints the reversed array.
📋 What You'll Learn
Create an array called numbers with these exact values: 1, 2, 3, 4, 5
Create a variable called length that stores the length of the numbers array
Use a for loop with a variable i to reverse the numbers array in place
Print the reversed numbers array
💡 Why This Matters
🌍 Real World
Reversing arrays is useful in many real-world tasks like undoing actions, reversing playlists, or processing data backwards.
💼 Career
Understanding array reversal helps in software development roles where data manipulation and algorithmic thinking are important.
Progress0 / 4 steps
1
Create the initial array
Create an array called numbers with these exact values: 1, 2, 3, 4, 5
DSA Go
Hint
Use numbers := []int{1, 2, 3, 4, 5} to create the array.
2
Set up the length variable
Create a variable called length that stores the length of the numbers array using len(numbers)
DSA Go
Hint
Use length := len(numbers) to get the array length.
3
Reverse the array in place
Use a for loop with variable i from 0 to length/2 to swap elements and reverse the numbers array in place
DSA Go
Hint
Use a for loop to swap elements at positions i and length-1-i.
4
Print the reversed array
Print the numbers array using fmt.Println(numbers)
DSA Go
Hint
Use fmt.Println(numbers) to print the reversed array.
Practice
(1/5)
1. What does reversing an array mean in simple terms?
easy
A. Changing the order of elements so the last becomes first and first becomes last
B. Sorting the array in ascending order
C. Removing duplicate elements from the array
D. Adding new elements at the end of the array
Solution
Step 1: Understand array order
An array has elements arranged in a sequence from first to last.
Step 2: Define reversal
Reversing means flipping this order so the last element comes first and the first goes last.
Final Answer:
Changing the order of elements so the last becomes first and first becomes last -> Option A
Quick Check:
Reverse = Flip order [OK]
Hint: Reverse means flip the order of elements [OK]
Common Mistakes:
Confusing reversal with sorting
Thinking reversal removes elements
Believing reversal adds elements
2. Which of the following Go code snippets correctly reverses an array named arr of integers?
easy
A. for i := len(arr)-1; i >= 0; i-- { arr[i] = arr[i] }
B. for i := 0; i < len(arr); i++ { arr[i] = arr[len(arr)-1-i] }
C. for i := 0; i < len(arr)/2; i++ { arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i] }
D. for i := 0; i < len(arr); i++ { arr[i] = arr[i+1] }
Solution
Step 1: Identify correct swapping logic
for i := 0; i < len(arr)/2; i++ { arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i] } swaps elements from start and end moving towards the center, which is the correct reversal method.
Step 2: Check other options for errors
for i := 0; i < len(arr); i++ { arr[i] = arr[len(arr)-1-i] } overwrites elements without swapping, losing data. for i := 0; i < len(arr); i++ { arr[i] = arr[i+1] } shifts elements incorrectly. for i := len(arr)-1; i >= 0; i-- { arr[i] = arr[i] } does nothing effective.
Final Answer:
for i := 0; i < len(arr)/2; i++ { arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i] } -> Option C
Quick Check:
Swap pairs from ends to center = for i := 0; i < len(arr)/2; i++ { arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i] } [OK]
Hint: Swap pairs from start and end until middle [OK]
Common Mistakes:
Not swapping but overwriting elements
Looping over full array instead of half
Ignoring index bounds causing errors
3. What is the output of the following Go code?
arr := []int{1, 2, 3, 4, 5}
for i := 0; i < len(arr)/2; i++ {
arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i]
}
fmt.Println(arr)
After both swaps, array is [5 4 3 2 1]. But the code prints after loop, so output is [5 4 3 2 1].
Final Answer:
[5 4 3 2 1] -> Option A
Quick Check:
Swapped ends inward = reversed array [OK]
Hint: Swap pairs from ends, middle stays same if odd length [OK]
Common Mistakes:
Only swapping first and last once
Not swapping pairs correctly
Confusing output with original array
4. Find the error in this Go code that tries to reverse an array arr:
for i := 0; i <= len(arr)/2; i++ {
arr[i] = arr[len(arr)-1-i]
}
medium
A. The loop should run only till i < len(arr)/2, not <=
B. It overwrites elements without swapping, losing data
C. The code swaps elements correctly, no error
D. The index len(arr)-1-i is out of range
Solution
Step 1: Analyze loop and assignment
The code assigns arr[i] = arr[len(arr)-1-i] without swapping, so original arr[i] is lost.
Step 2: Understand consequence
Without swapping, the array is partially overwritten and not reversed correctly.
Final Answer:
It overwrites elements without swapping, losing data -> Option B
Quick Check:
Overwrite without swap loses data [OK]
Hint: Always swap pairs, don't overwrite [OK]
Common Mistakes:
Using <= instead of < in loop
Not swapping both elements
Ignoring data loss from overwrite
5. Given a slice arr := []int{1, 2, 3, 4, 5, 6}, write a Go function that reverses the slice in place and returns it. Which of the following is the correct implementation?
hard
A. func reverse(arr []int) []int {
for i := 0; i < len(arr); i++ {
arr[i] = arr[len(arr)-1-i]
}
return arr
}
B. func reverse(arr []int) []int {
for i := 0; i <= len(arr)/2; i++ {
arr[i] = arr[len(arr)-1-i]
}
return arr
}
C. func reverse(arr []int) []int {
for i := len(arr)-1; i >= 0; i-- {
arr[i] = arr[i]
}
return arr
}
D. func reverse(arr []int) []int {
for i := 0; i < len(arr)/2; i++ {
arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i]
}
return arr
}
Solution
Step 1: Check correct swapping logic
func reverse(arr []int) []int {
for i := 0; i < len(arr)/2; i++ {
arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i]
}
return arr
} swaps elements from start and end moving inward, correctly reversing the slice in place.
Step 2: Verify other options
func reverse(arr []int) []int {
for i := 0; i < len(arr); i++ {
arr[i] = arr[len(arr)-1-i]
}
return arr
} overwrites without swapping, losing data. func reverse(arr []int) []int {
for i := len(arr)-1; i >= 0; i-- {
arr[i] = arr[i]
}
return arr
} does nothing effective. func reverse(arr []int) []int {
for i := 0; i <= len(arr)/2; i++ {
arr[i] = arr[len(arr)-1-i]
}
return arr
} overwrites without swapping and uses <= causing index issues.
Final Answer:
func reverse(arr []int) []int {
for i := 0; i < len(arr)/2; i++ {
arr[i], arr[len(arr)-1-i] = arr[len(arr)-1-i], arr[i]
}
return arr
} -> Option D
Quick Check:
Swap pairs from ends to center and return [OK]
Hint: Swap pairs up to half length, then return [OK]
Common Mistakes:
Overwriting elements without swapping
Looping beyond half length
Not returning the modified slice
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.