📖 Scenario: You have a list of product IDs in a store inventory. You want to find if a specific product ID is available in the list.
🎯 Goal: Build a simple program that uses linear search to find the position of a product ID in the list.
📋 What You'll Learn
Create a slice of integers called products with the exact values: 101, 203, 405, 302, 101, 509
Create an integer variable called target with the value 302
Write a for loop using the index variable i to iterate over products
Inside the loop, use an if statement to check if products[i] equals target
If found, print the message "Product found at index: " followed by the index i
If not found after the loop, print "Product not found"
💡 Why This Matters
🌍 Real World
Searching for items in a list is common in inventory management, contact lists, or any collection of data.
💼 Career
Understanding linear search helps in debugging and optimizing simple search tasks before moving to advanced algorithms.
Progress0 / 4 steps
1
Create the product list
Create a slice of integers called products with these exact values: 101, 203, 405, 302, 101, 509
DSA Go
Hint
Use products := []int{} to create the slice with the given numbers.
2
Set the target product ID
Create an integer variable called target and set it to 302
DSA Go
Hint
Use target := 302 to create the variable.
3
Write the linear search loop
Write a for loop with index variable i to iterate over products. Inside the loop, use an if statement to check if products[i] equals target. If yes, print "Product found at index: " and the index i, then return to stop the search.
DSA Go
Hint
Use a for loop from 0 to len(products). Inside, check if products[i] equals target. If yes, print and return.
4
Print not found message
After the loop, print "Product not found" if the product was not found.
DSA Go
Hint
Print "Product not found" after the loop if no match was found.
Practice
(1/5)
1. What is the main idea behind the Linear Search Algorithm?
easy
A. Check each element one by one until the target is found or list ends
B. Divide the list into halves repeatedly to find the target
C. Sort the list first then search using binary steps
D. Use a hash table to find the target instantly
Solution
Step 1: Understand linear search process
Linear search checks each element in order, starting from the first, until it finds the target or reaches the end.
Step 2: Compare with other search methods
Other methods like binary search divide the list or use extra data structures, but linear search is simple and direct.
Final Answer:
Check each element one by one until the target is found or list ends -> Option A
Quick Check:
Linear search = check elements one by one [OK]
Hint: Linear search checks elements in order until found [OK]
Common Mistakes:
Confusing linear search with binary search
Thinking linear search requires sorted list
Assuming linear search is faster than binary search always
2. Which of the following is the correct syntax to start a linear search loop in Go for an array named arr?
easy
A. while i < len(arr) {
B. for i in arr {
C. foreach i in arr {
D. for i := 0; i < len(arr); i++ {
Solution
Step 1: Identify Go loop syntax for arrays
In Go, the standard for loop to iterate over an array uses: for i := 0; i < len(arr); i++ { ... }
Step 2: Check other options for Go correctness
Options B and C use syntax from other languages, and D is correct Go syntax.
Final Answer:
for i := 0; i < len(arr); i++ { -> Option D
Quick Check:
Go for loop syntax = for i := 0; i < len(arr); i++ { [OK]
Hint: Use Go's for loop with index and length [OK]
Common Mistakes:
Using Python or JavaScript loop syntax in Go
Forgetting to initialize loop variable
Using while loop which is not common in Go
3. What will be the output of the following Go code?
package main
import "fmt"
func main() {
arr := []int{4, 2, 7, 1, 9}
target := 7
index := -1
for i := 0; i < len(arr); i++ {
if arr[i] == target {
index = i
break
}
}
fmt.Println(index)
}
medium
A. 3
B. -1
C. 2
D. 7
Solution
Step 1: Trace the loop to find target 7 in array
Array is [4, 2, 7, 1, 9]. Loop checks elements: index 0=4, 1=2, 2=7 matches target.
Step 2: Assign index and break loop
When arr[2] == 7, index is set to 2 and loop breaks, so index remains 2.
Final Answer:
2 -> Option C
Quick Check:
Target 7 found at index 2 [OK]
Hint: Stop loop when target found, print index [OK]
Common Mistakes:
Returning element value instead of index
Not breaking loop and returning last index
Confusing index with value
4. Find the error in this Go linear search code snippet:
arr := []int{3, 5, 8, 6}
target := 6
index := -1
for i := 0; i <= len(arr); i++ {
if arr[i] == target {
index = i
break
}
}
fmt.Println(index)
medium
A. The target value should be declared as a pointer
B. Loop condition should be i < len(arr), not i <= len(arr)
C. Variable 'index' should be initialized to 0 instead of -1
D. The array should be sorted before searching
Solution
Step 1: Check loop boundary condition
The loop uses i <= len(arr), but valid indices are 0 to len(arr)-1. Using <= causes out-of-range error.
Step 2: Correct loop condition
Change loop to i < len(arr) to avoid accessing invalid index.
Final Answer:
Loop condition should be i < len(arr), not i <= len(arr) -> Option B
Quick Check:
Loop index must be less than length [OK]
Hint: Use i < len(arr) to avoid index out of range [OK]
Common Mistakes:
Using <= instead of < in loop condition
Initializing index incorrectly
Thinking array must be sorted for linear search
5. You have a list of student names: ["Anna", "Bob", "Clara", "David", "Eva"]. You want to find the position of "David" using linear search in Go. Which code snippet correctly implements this and prints the index or -1 if not found?
hard
A. names := []string{"Anna", "Bob", "Clara", "David", "Eva"}
target := "David"
index := -1
for i := 0; i < len(names); i++ {
if names[i] == target {
index = i
break
}
}
fmt.Println(index)
B. names := []string{"Anna", "Bob", "Clara", "David", "Eva"}
target := "David"
index := 0
for i := 1; i <= len(names); i++ {
if names[i] == target {
index = i
break
}
}
fmt.Println(index)
C. names := []string{"Anna", "Bob", "Clara", "David", "Eva"}
target := "David"
index := -1
for i := 0; i < len(names); i++ {
if names[i] != target {
index = i
break
}
}
fmt.Println(index)
D. names := []string{"Anna", "Bob", "Clara", "David", "Eva"}
target := "David"
index := -1
for i := 0; i < len(names); i++ {
if names[i] == target {
index = i + 1
break
}
}
fmt.Println(index)
Solution
Step 1: Check loop and index initialization
names := []string{"Anna", "Bob", "Clara", "David", "Eva"}
target := "David"
index := -1
for i := 0; i < len(names); i++ {
if names[i] == target {
index = i
break
}
}
fmt.Println(index) initializes index to -1 and loops from 0 to len(names)-1 correctly.
Step 2: Verify condition and output
It compares names[i] == target and breaks on match, printing correct zero-based index or -1 if not found.
Final Answer:
Option A code correctly implements linear search and prints index or -1 -> Option A
Quick Check:
Linear search with correct loop and condition [OK]
Hint: Loop from 0 to len-1, compare equal, break and print index [OK]
Common Mistakes:
Using wrong loop bounds causing runtime error
Setting index incorrectly on no match
Adding 1 to index causing off-by-one error
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.