📖 Scenario: Imagine you run a small library. You want to keep track of which book belongs to which shelf number. You need a quick way to find the shelf number when you know the book's name.
🎯 Goal: You will create a simple program that stores book names and their shelf numbers using a map (hash map). You will then look up the shelf number for a specific book quickly.
📋 What You'll Learn
Create a map called library with book names as keys and shelf numbers as values
Add at least three books with their exact shelf numbers
Create a variable called bookToFind with the exact book name to search
Use the map to find the shelf number for bookToFind
Print the shelf number in the format: "Shelf number for is "
💡 Why This Matters
🌍 Real World
Hash maps are used in many apps to quickly find information, like looking up a contact's phone number by name.
💼 Career
Understanding hash maps is important for software developers to write efficient code that handles data fast.
Progress0 / 4 steps
1
Create the library map with books and shelf numbers
Create a map called library with these exact entries: "Go Programming": 5, "Data Structures": 3, "Algorithms": 7
DSA Go
Hint
Use map[string]int to create a map with string keys and int values.
2
Add the book to find
Create a variable called bookToFind and set it to the exact string "Data Structures"
DSA Go
Hint
Use bookToFind := "Data Structures" to create the variable.
3
Find the shelf number for the book
Use the map library and the variable bookToFind to get the shelf number. Store it in a variable called shelfNumber
DSA Go
Hint
Use shelfNumber := library[bookToFind] to get the shelf number.
4
Print the shelf number for the book
Print the shelf number in this exact format: "Shelf number for Data Structures is 3" using fmt.Println
DSA Go
Hint
Use fmt.Println("Shelf number for Data Structures is 3") to print the exact output.
Practice
(1/5)
1. Why do we use a hash map instead of a simple list to store key-value pairs?
easy
A. Because lists use less memory than hash maps
B. Because hash maps store data in sorted order automatically
C. Because hash maps provide faster search for keys than lists
D. Because lists can only store numbers, not keys
Solution
Step 1: Understand list search time
Searching for a key in a list requires checking each element one by one, which takes time proportional to the list size.
Step 2: Understand hash map search time
Hash maps use a hash function to find the key's location quickly, making search much faster on average.
Final Answer:
Because hash maps provide faster search for keys than lists -> Option C
Quick Check:
Hash map = fast key search [OK]
Hint: Hash maps speed up key lookup compared to lists [OK]
Common Mistakes:
Thinking lists are faster for key search
Believing hash maps store data sorted
Confusing memory use with speed
2. Which of the following is the correct way to declare a hash map in Go to store string keys and integer values?
easy
A. var m map[int]string = make(map[string]int)
B. var m map[string]int = make(map[string]int)
C. var m map[string]int = []string{}
D. var m map[string]int = {}
Solution
Step 1: Check map declaration syntax in Go
In Go, a map is declared with 'var m map[keyType]valueType' and initialized with make().
Step 2: Validate each option
var m map[string]int = make(map[string]int) correctly declares and initializes a map with string keys and int values. var m map[int]string = make(map[string]int) has mismatched types. var m map[string]int = []string{} uses slice syntax incorrectly. var m map[string]int = {} uses invalid initialization syntax.
Final Answer:
var m map[string]int = make(map[string]int) -> Option B
Quick Check:
Go map syntax = var m map[string]int = make(map[string]int) [OK]
Hint: Use make() to initialize maps in Go [OK]
Common Mistakes:
Using slice syntax instead of map
Mismatching key and value types
Forgetting to initialize with make()
3. What will be the output of the following Go code snippet?
The map 'm' stores integer values for keys "apple" and "banana" as 5 and 3 respectively.
Step 2: Calculate the sum of values
Adding m["apple"] (5) and m["banana"] (3) results in 8.
Final Answer:
8 -> Option D
Quick Check:
5 + 3 = 8 [OK]
Hint: Sum values by accessing keys directly [OK]
Common Mistakes:
Concatenating values as strings
Expecting zero for existing keys
Thinking code has syntax errors
4. Identify the error in this Go code that uses a hash map:
m := make(map[string]int)
m["cat"] = 2
fmt.Println(m["dog"])
medium
A. Accessing a key that does not exist returns zero value, no error
B. Map must be declared with var keyword
C. Keys must be integers, not strings
D. Cannot print map values directly
Solution
Step 1: Check map initialization and usage
The map is correctly initialized and assigned a value for key "cat".
Step 2: Understand accessing missing keys
Accessing m["dog"] returns the zero value for int type, which is 0, without error.
Final Answer:
Accessing a key that does not exist returns zero value, no error -> Option A
Quick Check:
Missing key returns zero [OK]
Hint: Missing keys return zero value, no runtime error [OK]
Common Mistakes:
Expecting runtime error on missing key
Thinking keys must be integers
Confusing map declaration syntax
5. You want to count how many times each word appears in a list of strings using a hash map in Go. Which approach correctly solves this problem?
hard
A. Initialize map[string]int, loop words, increment count for each word key
B. Use a slice of strings and append words, then count manually
C. Use a map[int]string with word counts as keys
D. Sort the list and count duplicates without a map
Solution
Step 1: Understand the counting problem
We need to track how many times each word appears, so keys are words and values are counts.
Step 2: Choose correct data structure and method
A map with string keys and int values lets us increment counts easily while looping through words.
Step 3: Evaluate other options
Use a slice of strings and append words, then count manually uses a slice which is inefficient for counting. Use a map[int]string with word counts as keys swaps keys and values incorrectly. Sort the list and count duplicates without a map avoids map but is less efficient and more complex.
Final Answer:
Initialize map[string]int, loop words, increment count for each word key -> Option A
Quick Check:
Map counts words efficiently [OK]
Hint: Use map[word]count and increment in loop [OK]
Common Mistakes:
Using wrong map key/value types
Trying to count with slices only
Ignoring map benefits for counting
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.