Return inside loops in Go - Time & Space Complexity
When a return statement is inside a loop, it can stop the loop early. This affects how long the code runs.
We want to see how the running time changes when the return happens inside the loop.
Analyze the time complexity of the following code snippet.
func findFirstEven(numbers []int) int {
for _, num := range numbers {
if num%2 == 0 {
return num
}
}
return -1
}
This function looks for the first even number in a list and returns it immediately when found.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through the list of numbers.
- How many times: Up to the first even number found, or the whole list if none found.
The time depends on where the first even number is. If it is near the start, the loop stops quickly. If none are even, the loop checks every number.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Between 1 and 10 checks |
| 100 | Between 1 and 100 checks |
| 1000 | Between 1 and 1000 checks |
Pattern observation: Best case is very fast, worst case grows linearly with input size.
Time Complexity: O(n)
This means in the worst case, the time grows directly with the number of items in the list.
[X] Wrong: "Because there is a return inside the loop, the time is always constant."
[OK] Correct: The return stops the loop early only if the condition is met quickly. If not, the loop runs through all items, so time depends on input size.
Understanding how return inside loops affects time helps you explain code efficiency clearly. It shows you can think about best and worst cases, a useful skill in real coding.
"What if the function returned the last even number instead of the first? How would the time complexity change?"
Practice
What happens when you use return inside a for loop in Go?
Solution
Step 1: Understand the role of return in functions
In Go,returnimmediately ends the function and sends back a value.Step 2: Effect of return inside a loop
Whenreturnis inside a loop, it stops the whole function, not just the loop.Final Answer:
The function stops immediately and returns the value. -> Option AQuick Check:
Return ends function, not just loop [OK]
- Thinking return only stops the loop
- Confusing return with break
- Assuming loop continues after return
Which of the following Go code snippets correctly uses return inside a for loop to return the first even number from a slice?
func firstEven(nums []int) int {
for _, n := range nums {
if n % 2 == 0 {
// What goes here?
}
}
return -1
}Solution
Step 1: Identify what to return inside the loop
The function should return the first even number found, which isn.Step 2: Use return to stop function and send back the number
Usingreturn nimmediately ends the function and returns the even number.Final Answer:
return n -> Option AQuick Check:
Return value inside loop to stop function [OK]
- Using break instead of return
- Using continue which skips iteration
- Returning the whole slice instead of a number
What is the output of this Go program?
package main
import "fmt"
func findFirstPositive(nums []int) int {
for _, n := range nums {
if n > 0 {
return n
}
}
return 0
}
func main() {
fmt.Println(findFirstPositive([]int{-3, -2, 0, 5, 10}))
}Solution
Step 1: Trace the loop over the slice
The loop checks each number: -3 (not >0), -2 (not >0), 0 (not >0), 5 (>0).Step 2: Return the first positive number found
When it reaches 5, it returns 5 immediately, ending the function.Final Answer:
5 -> Option DQuick Check:
Return stops at first positive number 5 [OK]
- Assuming loop continues after return
- Returning 0 instead of first positive
- Confusing index with value
Find the error in this Go function that tries to return the first negative number from a slice:
func firstNegative(nums []int) int {
for _, n := range nums {
if n < 0 {
break
}
}
return 0
}Solution
Step 1: Understand break vs return inside loop
Usingbreakonly stops the loop, but the function continues and returns 0.Step 2: Correct usage is return to stop function and return value
To return the first negative number, usereturn ninside the if block.Final Answer:
Using break instead of return inside the loop -> Option CQuick Check:
Return ends function; break only stops loop [OK]
- Using break instead of return
- Expecting break to return value
- Not returning value inside loop
You want to write a Go function that returns the first string in a slice that starts with the letter 'A'. If none is found, return "Not found". Which code correctly uses return inside the loop?
func findA(words []string) string {
for _, w := range words {
if len(w) > 0 && w[0] == 'A' {
// What goes here?
}
}
return "Not found"
}Solution
Step 1: Identify the correct return value inside the loop
The function should return the first word starting with 'A', which isw.Step 2: Use return to immediately end the function and return the word
Usingreturn wstops the function and returns the found word.Final Answer:
return w -> Option BQuick Check:
Return found word inside loop to stop function [OK]
- Using break which only stops loop
- Using continue which skips iteration
- Returning wrong element like words[0]
Ready to prove it?
Pass the test and this pattern moves unknown
