📖 Scenario: You are working on a simple text analyzer tool that needs to look at each letter in a word to count vowels.
🎯 Goal: Build a program that goes through each character in a given word and prints each character on a new line.
📋 What You'll Learn
Create a string variable with a specific word
Create a variable to hold the length of the string
Use a for loop with an index to access each character in the string
Print each character on a new line
💡 Why This Matters
🌍 Real World
Text processing is common in many applications like search engines, spell checkers, and chatbots. Being able to look at each character helps analyze and transform text.
💼 Career
Understanding string traversal is a basic skill for software developers working with text data, preparing for tasks like parsing, validation, and formatting.
Progress0 / 4 steps
1
Create the string variable
Create a string variable called word and set it to the exact value "hello".
DSA Go
Hint
Use word := "hello" to create the string variable.
2
Get the length of the string
Create an integer variable called length and set it to the length of the string word using len(word).
DSA Go
Hint
Use length := len(word) to get the number of characters in the string.
3
Loop through each character in the string
Use a for loop with an index variable i from 0 to length - 1 to access each character in word by index.
DSA Go
Hint
Use for i := 0; i < length; i++ and access characters with word[i].
4
Print each character on a new line
Inside the for loop, print each character of word on a new line using fmt.Printf("%c\n", word[i]).
DSA Go
Hint
Use fmt.Printf("%c\n", word[i]) to print each character on its own line.
Practice
(1/5)
1. What does the expression len(s) return when s is a string in Go?
easy
A. The first character of the string
B. The number of characters (runes) in the string
C. The last character of the string
D. The number of bytes in the string
Solution
Step 1: Understand what len does on strings in Go
In Go, len(s) returns the number of bytes, not characters, because strings are byte slices.
Step 2: Differentiate bytes and characters
Characters (runes) can be multiple bytes, so len counts bytes, not runes.
Final Answer:
The number of bytes in the string -> Option D
Quick Check:
len(s) = bytes count [OK]
Hint: Remember: len counts bytes, not characters in Go strings [OK]
Common Mistakes:
Thinking len counts characters (runes)
Confusing bytes with characters
Assuming len returns a character
2. Which of the following is the correct way to access the third character of a string s in Go?
easy
A. s[3]
B. s[2]
C. s.charAt(2)
D. s.get(2)
Solution
Step 1: Recall Go string indexing
Go strings can be indexed like byte slices, starting at 0, so the third character is at index 2.
Step 2: Check syntax options
Only s[2] is valid Go syntax for accessing a byte at index 2.
Final Answer:
s[2] -> Option B
Quick Check:
Indexing starts at 0, third char = s[2] [OK]
Hint: Indexing starts at 0; third char is s[2] in Go [OK]
Common Mistakes:
Using 1-based indexing like s[3]
Using methods like charAt or get which don't exist in Go
Confusing bytes with runes
3. What is the output of the following Go code?
package main
import "fmt"
func main() {
s := "GoLang"
fmt.Println(string(s[1]))
}
medium
A. o
B. G
C. 1
D. Syntax error
Solution
Step 1: Identify the character at index 1
String "GoLang" indexed at 1 is byte for 'o'.
Step 2: Convert byte to string for printing
Using string(s[1]) converts byte 'o' to string "o".
Final Answer:
o -> Option A
Quick Check:
s[1] = 'o' printed as string [OK]
Hint: s[index] gives byte; convert to string to print char [OK]
Common Mistakes:
Printing byte as number instead of string
Confusing index 1 with 0
Expecting syntax error
4. What is wrong with this Go code snippet?
package main
import "fmt"
func main() {
s := "hello"
for i := 0; i <= len(s); i++ {
fmt.Printf("%c", s[i])
}
}
medium
A. Loop condition causes index out of range error
B. fmt.Printf format specifier is incorrect
C. String s is not initialized properly
D. for loop syntax is invalid
Solution
Step 1: Analyze loop range
The loop runs from i=0 to i=len(s) inclusive, but valid indices are 0 to len(s)-1.
Step 2: Identify error cause
At i=len(s), s[i] causes index out of range runtime error.
Final Answer:
Loop condition causes index out of range error -> Option A
Quick Check:
Index must be less than len(s) [OK]
Hint: Loop index must be < len(s), not <= len(s) [OK]
Common Mistakes:
Using <= instead of < in loop condition
Ignoring runtime index out of range error
Misunderstanding string indexing
5. Given a string s containing Unicode characters, which Go code snippet correctly prints each character (rune) on a new line?
hard
A. for i := 0; i < len(s); i++ { fmt.Println(string(s[i])) }
B. for i := range s { fmt.Println(s[i]) }
C. for _, r := range s { fmt.Println(string(r)) }
D. for i := 0; i <= len(s); i++ { fmt.Println(s[i]) }
Solution
Step 1: Understand Unicode handling in Go strings
Go strings are byte slices; indexing gives bytes, not runes. To get runes, use range loop.
Step 2: Check each option
for _, r := range s { fmt.Println(string(r)) } uses for _, r := range s which iterates runes correctly and prints each rune as string.
Final Answer:
for _, r := range s { fmt.Println(string(r)) } -> Option C
Quick Check:
Use range to iterate runes in string [OK]
Hint: Use range loop to get runes, not byte indexing [OK]
Common Mistakes:
Using byte indexing for Unicode characters
Looping with <= len(s)
Printing bytes directly without conversion
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.