Bird
Raised Fist0
Goprogramming~20 mins

Accessing map values in Go - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Map Mastery in Go
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of accessing a missing key in a map?
Consider the following Go code. What will be printed when accessing a key that does not exist in the map?
Go
package main
import "fmt"
func main() {
    m := map[string]int{"apple": 5, "banana": 3}
    fmt.Println(m["orange"])
}
Anil
B0
Cpanic: runtime error: invalid memory address or nil pointer dereference
DCompilation error
Attempts:
2 left
💡 Hint
In Go, accessing a map with a key that does not exist returns the zero value of the map's value type.
❓ Predict Output
intermediate
2:00remaining
How to check if a key exists in a map?
What will be the output of this Go program that checks if a key exists in a map?
Go
package main
import "fmt"
func main() {
    m := map[string]int{"x": 10}
    val, ok := m["y"]
    fmt.Println(val, ok)
}
A0 false
B0 true
CCompilation error
D10 false
Attempts:
2 left
💡 Hint
The second value returned when accessing a map key tells if the key exists.
🔧 Debug
advanced
2:00remaining
Why does this code panic when accessing a map?
This Go code panics at runtime. What is the cause?
Go
package main
import "fmt"
func main() {
    var m map[string]int
    fmt.Println(m["key"])
}
AThe key "key" does not exist, so it returns zero value 0 without panic.
BThe code has a syntax error due to missing map initialization.
CThe map m is nil and not initialized, so accessing it causes a panic.
DThe program compiles but prints garbage value.
Attempts:
2 left
💡 Hint
Maps must be initialized before use to avoid runtime panic.
❓ Predict Output
advanced
2:00remaining
What is the output when modifying a map value?
What will this Go program print?
Go
package main
import "fmt"
func main() {
    m := map[string]int{"a": 1}
    m["a"] += 5
    fmt.Println(m["a"])
}
ACompilation error: cannot assign to map element
B1
C6
DRuntime panic
Attempts:
2 left
💡 Hint
You can update map values by accessing and assigning to the key.
❓ Predict Output
expert
2:00remaining
What is the output of this map access with struct keys?
Given this Go code, what will be printed?
Go
package main
import "fmt"

type Point struct { X, Y int }

func main() {
    m := map[Point]string{
        {X: 1, Y: 2}: "A",
        {X: 3, Y: 4}: "B",
    }
    p := Point{X: 1, Y: 2}
    fmt.Println(m[p])
}
AB
BEmpty string
CCompilation error: invalid map key type
DA
Attempts:
2 left
💡 Hint
Structs can be used as map keys if all their fields are comparable.

Practice

(1/5)
1. What does the expression value, ok := myMap["key"] do in Go?
easy
A. It retrieves the value for "key" and checks if the key exists in the map.
B. It deletes the key "key" from the map.
C. It adds a new key "key" with value "ok" to the map.
D. It returns the number of keys in the map.

Solution

  1. Step 1: Understand map access syntax

    In Go, value, ok := myMap["key"] retrieves the value for the key and a boolean indicating if the key exists.
  2. Step 2: Explain the boolean ok

    The ok is true if the key is present, false otherwise.
  3. Final Answer:

    It retrieves the value for "key" and checks if the key exists in the map. -> Option A
  4. Quick Check:

    Map access with existence check = value, ok [OK]
Hint: Remember: value, ok checks key presence in map [OK]
Common Mistakes:
  • Thinking it deletes the key
  • Assuming it adds a key
  • Confusing it with map length
2. Which of the following is the correct way to check if a key exists in a Go map named m for key k?
easy
A. value, ok := m[k]; if ok { ... }
B. value := m[k]; if value != nil { ... }
C. if m.contains(k) { ... }
D. if m[k] != 0 { ... }

Solution

  1. Step 1: Recall Go map existence check syntax

    In Go, to check if a key exists, use value, ok := m[k] and then check ok.
  2. Step 2: Analyze options

    value := m[k]; if value != nil { ... } wrongly assumes value is nil for missing keys, which is not always true. if m.contains(k) { ... } uses a method that does not exist. if m[k] != 0 { ... } checks value but zero value can be valid.
  3. Final Answer:

    value, ok := m[k]; if ok { ... } -> Option A
  4. Quick Check:

    Use value, ok to check key presence [OK]
Hint: Use value, ok := map[key] to check key existence [OK]
Common Mistakes:
  • Checking value against nil or zero instead of ok
  • Using non-existent map methods
  • Assuming zero value means key missing
3. What will be the output of this Go code?
m := map[string]int{"a": 10, "b": 20}
value, ok := m["c"]
fmt.Println(value, ok)
medium
A. Compilation error
B. 0 true
C. 20 true
D. 0 false

Solution

  1. Step 1: Understand map lookup for missing key

    Key "c" is not in map m, so value gets zero value for int, which is 0, and ok is false.
  2. Step 2: Print output values

    Printing value and ok prints "0 false".
  3. Final Answer:

    0 false -> Option D
  4. Quick Check:

    Missing key returns zero value and false [OK]
Hint: Missing map keys return zero value and false [OK]
Common Mistakes:
  • Assuming missing key returns true
  • Expecting runtime error for missing key
  • Confusing zero value with actual stored value
4. Identify the error in this Go code snippet:
m := map[string]int{"x": 5}
value := m["y"]
if value {
    fmt.Println("Key exists")
}
medium
A. Missing declaration of map m.
B. Map key "y" does not exist, causing runtime panic.
C. Cannot use int value as boolean in if condition.
D. Syntax error in map initialization.

Solution

  1. Step 1: Analyze the if condition

    The variable value is an int, but Go requires a boolean expression in if conditions.
  2. Step 2: Understand Go type rules

    Using an int directly as a boolean causes a compile-time error.
  3. Final Answer:

    Cannot use int value as boolean in if condition. -> Option C
  4. Quick Check:

    if conditions need boolean, not int [OK]
Hint: if needs boolean, not int value [OK]
Common Mistakes:
  • Assuming missing key causes panic
  • Ignoring type mismatch in if condition
  • Thinking map declaration is missing
5. Given a map m := map[string]int{"a": 1, "b": 0, "c": 3}, how can you print only keys that exist and have a non-zero value?
hard
A. for k := range m { if m[k] { fmt.Println(k) } }
B. for k, v := range m { if v != 0 { fmt.Println(k) } }
C. for k, v := range m { if m[k] != nil { fmt.Println(k) } }
D. for k, v := range m { if v { fmt.Println(k) } }

Solution

  1. Step 1: Iterate over map with key and value

    Use for k, v := range m to get keys and values.
  2. Step 2: Check for non-zero values

    Check if v != 0 to filter keys with non-zero values.
  3. Step 3: Print keys that meet condition

    Print the key k inside the if block.
  4. Final Answer:

    for k, v := range m { if v != 0 { fmt.Println(k) } } -> Option B
  5. Quick Check:

    Filter keys by value != 0 using range loop [OK]
Hint: Use for k,v := range map and check v != 0 [OK]
Common Mistakes:
  • Using value as boolean directly
  • Checking map key against nil
  • Ignoring zero values in condition
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