A map in Go is a collection that stores key-value pairs. It allows you to look up a value by its key quickly, like a dictionary or a phone book.
Click to reveal answer
beginner
How do you declare an empty map in Go?
You declare an empty map using the syntax: var m map[string]int or by using make: m := make(map[string]int). The second way creates an initialized map ready to use.
Click to reveal answer
beginner
How do you add or update a key-value pair in a Go map?
You add or update a value by assigning it to a key: m["key"] = value. If the key exists, the value updates; if not, it adds a new pair.
Click to reveal answer
intermediate
What happens if you try to read a key that does not exist in a Go map?
Reading a non-existent key returns the zero value for the map's value type. For example, if the value type is int, it returns 0. You can also check if the key exists using the two-value assignment.
Click to reveal answer
intermediate
How do you check if a key exists in a Go map?
Use the two-value assignment: value, ok := m["key"]. The variable ok is true if the key exists, false otherwise.
Click to reveal answer
How do you create an empty map of string keys and int values in Go?
AAll of the above
Bm := map[string]int{}
Cvar m map[string]int
Dm := make(map[string]int)
✗ Incorrect
All these ways create a map variable. However, only 'make' and '{}' initialize the map for use. 'var m map[string]int' declares but does not initialize the map.
What is the zero value returned when accessing a missing key in a map of type map[string]int?
A"" (empty string)
Bnil
C0
Dfalse
✗ Incorrect
For int values, the zero value is 0. So accessing a missing key returns 0.
Which syntax checks if a key exists in a Go map?
Avalue := m["key"]
Bexists := m.contains("key")
Cif m.hasKey("key")
Dvalue, ok := m["key"]
✗ Incorrect
The two-value assignment returns the value and a boolean indicating if the key exists.
What happens if you assign a value to a key in a nil map?
AIt causes a runtime panic
BThe map automatically initializes
CThe assignment is ignored
DThe key is added but value is zero
✗ Incorrect
Assigning to a nil map causes a runtime panic because the map is not initialized.
How do you declare and initialize a map with some key-value pairs in one line?
Am := make(map[string]int){"a": 1, "b": 2}
Bm := map[string]int{"a": 1, "b": 2}
Cvar m = map[string]int{}
Dm := new(map[string]int)
✗ Incorrect
You can declare and initialize a map with literals like map[string]int{"a": 1, "b": 2}.
Explain how to create, add, and check keys in a Go map.
Think about how you start a map, put things in it, and see if something is there.
You got /4 concepts.
Describe what happens when you read a key that does not exist in a Go map and how to handle it.
Remember the difference between missing keys and keys with zero values.
You got /3 concepts.
Practice
(1/5)
1. What is the correct way to create an empty map with string keys and int values in Go?
easy
A. m := make(map[string]int)
B. m := map[string]int()
C. m := new(map[string]int)
D. m := []string{}
Solution
Step 1: Understand map creation syntax
In Go, the built-in function make is used to create maps with specified key and value types.
Step 2: Identify the correct syntax for an empty map
make(map[string]int) creates an empty map with string keys and int values.
Final Answer:
m := make(map[string]int) -> Option A
Quick Check:
Use make(map[keyType]valueType) to create maps [OK]
Hint: Use make() with map[keyType]valueType to create maps [OK]
Common Mistakes:
Using new() instead of make() for maps
Trying to create map with slice syntax
Confusing map literal with empty slice
2. Which of the following is a syntax error when creating a map in Go?
easy
A. m := make(map[int]string)
B. m := make(map[float64]int)
C. m := make(map[[]int]string)
D. m := map[int]string{}
Solution
Step 1: Check key type validity
Map keys must be comparable types. Slices ([]int) are not comparable in Go.
Step 2: Identify invalid map key type
Using []int as a key type causes a syntax error because slices cannot be map keys.
Final Answer:
m := make(map[[]int]string) -> Option C
Quick Check:
Map keys must be comparable types [OK]
Hint: Map keys cannot be slices or maps, only comparable types [OK]
Common Mistakes:
Using slices or maps as map keys
Confusing map literal with slice literal
Ignoring key type restrictions
3. What will be the output of the following Go code?
The map m stores key-value pairs: "apple"=5 and "banana"=3.
Step 2: Calculate the sum of values
Adding m["apple"] (5) and m["banana"] (3) results in 8.
Final Answer:
8 -> Option B
Quick Check:
5 + 3 = 8 [OK]
Hint: Sum map values by accessing keys directly [OK]
Common Mistakes:
Concatenating values as strings instead of adding
Expecting zero for existing keys
Forgetting to initialize map before use
4. Identify the error in the following Go code snippet:
var m map[string]int
m["key"] = 10
fmt.Println(m["key"])
medium
A. No error, prints 10
B. Syntax error in map declaration
C. Key type must be int, not string
D. Map declared but not initialized, causes runtime panic
Solution
Step 1: Check map initialization
The map m is declared but not initialized with make, so it is nil.
Step 2: Understand runtime behavior
Assigning to a nil map causes a runtime panic (error) because the map is not ready to store values.
Final Answer:
Map declared but not initialized, causes runtime panic -> Option D
Quick Check:
Declare + make before use to avoid panic [OK]
Hint: Always initialize maps with make() before adding keys [OK]
Common Mistakes:
Forgetting to initialize map before assignment
Assuming declaration alone creates usable map
Confusing map declaration with slice declaration
5. Given a slice of strings keys := []string{"a", "b", "c"} and a slice of ints values := []int{1, 2, 3}, which code snippet correctly creates a map from keys to values?
hard
A. m := make(map[string]int)
for i := range keys {
m[keys[i]] = values[i]
}
B. m := map[string]int{}
for i, v := range values {
m[v] = keys[i]
}
C. m := make(map[int]string)
for i := 0; i < len(keys); i++ {
m[i] = keys[i]
}
D. m := make(map[string]int)
for i := 0; i < len(values); i++ {
m[values[i]] = keys[i]
}
Solution
Step 1: Match keys and values correctly
Keys are strings, values are ints. The map must have type map[string]int.
Step 2: Verify loop and assignment
m := make(map[string]int)
for i := range keys {
m[keys[i]] = values[i]
} loops over keys and assigns m[keys[i]] = values[i], correctly pairing keys to values.
Final Answer:
m := make(map[string]int)
for i := range keys {
m[keys[i]] = values[i]
} -> Option A
Quick Check:
Loop keys, assign values to map[key] [OK]
Hint: Loop keys, assign values to map[key] for correct pairing [OK]
Common Mistakes:
Swapping keys and values in map assignment
Using wrong map key or value types
Not initializing map before assignment
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.