Bird
Raised Fist0
Goprogramming~10 mins

Iterating over maps in Go - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Iterating over maps
Start
↓
Initialize map
↓
Start loop over map
↓
Get key, value
↓
Process key, value
↓
More items?
Yes→Next item
No↓
End loop
↓
Program ends
This flow shows how Go loops over each key-value pair in a map until all items are processed.
Execution Sample
Go
package main
import "fmt"
func main() {
  m := map[string]int{"a":1, "b":2}
  for k, v := range m {
    fmt.Println(k, v)
  }
}
This code loops over a map and prints each key and its value.
Execution Table
StepActionKeyValueOutput
1Start loop
2Get first itema1Print: a 1
3Get second itemb2Print: b 2
4No more itemsLoop ends
💡 All map items processed, loop ends
Variable Tracker
VariableStartAfter 1After 2Final
kab
v12
Key Moments - 2 Insights
Why does the order of keys printed change each time?
Go maps do not guarantee order when iterating. The execution_table shows keys 'a' then 'b', but this can vary each run.
What happens if the map is empty?
The loop body does not run at all. The execution_table would skip steps 2 and 3 and go directly to step 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the key and value at step 3?
AKey: a, Value: 1
BKey: b, Value: 2
CKey: c, Value: 3
DNo key, no value
💡 Hint
Check row with Step 3 in execution_table for key and value
At which step does the loop end according to the execution_table?
AStep 4
BStep 3
CStep 2
DStep 1
💡 Hint
Look for the step where 'Loop ends' is in the Output column
If the map had 3 items, how many times would the loop run?
A1 time
B2 times
C3 times
D4 times
💡 Hint
Loop runs once per map item, see variable_tracker for iterations
Concept Snapshot
Go maps store key-value pairs.
Use 'for k, v := range map' to loop over them.
Each loop gets one key and its value.
Order is random, not guaranteed.
Loop ends after all items processed.
Full Transcript
This visual execution shows how Go iterates over maps using a for loop with range. The program initializes a map with two items. Then it starts a loop that runs once for each key-value pair. Each step gets one key and value, then prints them. The order of keys is not fixed and can change each run. The loop ends when all items are processed. Variables k and v change each iteration to hold the current key and value. Beginners often wonder why order changes or what happens if the map is empty. The execution table and variable tracker clarify these points. The quiz tests understanding of keys, loop steps, and iteration count.

Practice

(1/5)
1.

What does the range keyword do when used with a map in Go?

easy
A. It creates a copy of the map.
B. It sorts the map by keys before looping.
C. It only loops over the keys, ignoring values.
D. It allows you to loop over all key-value pairs in the map.

Solution

  1. Step 1: Understand the purpose of range with maps

    The range keyword in Go is used to iterate over elements in data structures like arrays, slices, and maps.
  2. Step 2: Identify what happens with maps

    When used with a map, range returns both the key and the value for each item in the map.
  3. Final Answer:

    It allows you to loop over all key-value pairs in the map. -> Option D
  4. Quick Check:

    range with map = loop keys and values [OK]
Hint: Remember: range gives key and value for maps [OK]
Common Mistakes:
  • Thinking range sorts the map
  • Assuming range only returns keys
  • Believing range copies the map
2.

Which of the following is the correct syntax to iterate over a map m in Go?

?
easy
A. for key, value := range m { /* code */ }
B. for (key, value) in m { /* code */ }
C. foreach key, value in m { /* code */ }
D. for key, value from m { /* code */ }

Solution

  1. Step 1: Recall Go's for-range syntax

    In Go, the correct way to loop over a map is using for key, value := range mapName.
  2. Step 2: Compare options

    Only for key, value := range m { /* code */ } uses the correct Go syntax with := and range keyword.
  3. Final Answer:

    for key, value := range m { /* code */ } -> Option A
  4. Quick Check:

    Go map iteration syntax = for key, value := range map [OK]
Hint: Use := with range to get key and value [OK]
Common Mistakes:
  • Using Python or JavaScript style loops
  • Missing := in the loop
  • Using wrong keywords like foreach or from
3.

What will be the output of the following Go code?

package main
import "fmt"
func main() {
    m := map[string]int{"a": 1, "b": 2}
    for k, v := range m {
        fmt.Println(k, v)
    }
}
medium
A. Either 'a 1\nb 2' or 'b 2\na 1' (order not fixed)
B. b 2\na 1
C. a 1\nb 2
D. Compilation error

Solution

  1. Step 1: Understand map iteration order in Go

    Maps in Go do not guarantee order when iterating. The keys can appear in any order.
  2. Step 2: Analyze the output possibilities

    The code prints each key and value pair. The output could be 'a 1' then 'b 2' or 'b 2' then 'a 1'.
  3. Final Answer:

    Either 'a 1\nb 2' or 'b 2\na 1' (order not fixed) -> Option A
  4. Quick Check:

    Map iteration order = unpredictable [OK]
Hint: Map order is random; output order varies [OK]
Common Mistakes:
  • Assuming map iteration order is fixed
  • Expecting sorted output
  • Thinking code causes error
4.

Identify the error in this Go code snippet that tries to iterate over a map m:

for key, value = range m {
    fmt.Println(key, value)
}
medium
A. Using 'range' incorrectly; should be 'for each'.
B. Using '=' instead of ':=' in the for loop.
C. Missing parentheses around key and value.
D. Map 'm' is not declared.

Solution

  1. Step 1: Check the for loop variable declaration

    In Go, variables declared in a for-range loop must use ':=' to declare new variables.
  2. Step 2: Identify the incorrect operator

    The code uses '=' which is assignment, not declaration, causing a syntax error.
  3. Final Answer:

    Using '=' instead of ':=' in the for loop. -> Option B
  4. Quick Check:

    Use ':=' to declare loop variables [OK]
Hint: Use ':=' not '=' in for-range loops [OK]
Common Mistakes:
  • Using '=' instead of ':='
  • Adding parentheses around variables
  • Confusing 'range' with other keywords
5.

Given a map m := map[string]int{"x": 0, "y": 2, "z": 0}, how can you create a new map containing only keys with non-zero values by iterating over m?

hard
A. Use range but skip keys with zero values by deleting them from original map.
B. Use for key := range m and copy all keys regardless of value.
C. Create a new map and add pairs where value != 0 inside a for-range loop.
D. Sort the map and then filter keys with zero values.

Solution

  1. Step 1: Understand the goal

    We want a new map with only keys whose values are not zero.
  2. Step 2: Use for-range to check each key-value pair

    Iterate over m with for k, v := range m, and add to new map only if v != 0.
  3. Step 3: Avoid modifying original map

    Do not delete keys from original map during iteration; create a new map instead.
  4. Final Answer:

    Create a new map and add pairs where value != 0 inside a for-range loop. -> Option C
  5. Quick Check:

    Filter map by value using new map and for-range [OK]
Hint: Build new map, add only non-zero values in loop [OK]
Common Mistakes:
  • Deleting keys from map while iterating
  • Copying all keys without filtering
  • Trying to sort a map (not supported)
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard