Bird
Raised Fist0
DSA Goprogramming~10 mins

String Traversal and Character Access in DSA Go - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print each character of the string word using a for loop.

DSA Go
word := "hello"
for [1] := 0; [1] < len(word); [1]++ {
    fmt.Printf("%c ", word[[1]])
}
Drag options to blanks, or click blank then click option'
Ai
Bj
Ck
Dx
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names in the for loop parts.
Starting the index from 1 instead of 0.
Using a variable not declared or unrelated.
2fill in blank
medium

Complete the code to print the ASCII value of each character in the string text.

DSA Go
text := "GoLang"
for i := 0; i < len(text); i++ {
    fmt.Println([1])
}
Drag options to blanks, or click blank then click option'
Atext
Bstring(text[i])
Ctext[i]
Di
Attempts:
3 left
💡 Hint
Common Mistakes
Printing the whole string instead of a character.
Converting the character to string which prints the character, not ASCII.
Printing the index variable instead of the character.
3fill in blank
hard

Fix the error in the code to correctly print each character of sentence as a rune (Unicode character).

DSA Go
sentence := "Hi!"
for i := 0; i < len(sentence); i++ {
    fmt.Printf("%c ", [1])
}
Drag options to blanks, or click blank then click option'
Arune(sentence[i])
Bsentence
Csentence[i]
Dstring(sentence[i])
Attempts:
3 left
💡 Hint
Common Mistakes
Printing sentence[i] directly which may not handle Unicode correctly.
Using string(sentence[i]) which converts to string, not rune.
Printing the whole sentence instead of characters.
4fill in blank
hard

Fill both blanks to create a map of characters to their counts from the string input.

DSA Go
input := "banana"
counts := make(map[rune]int)
for _, [1] := range input {
    counts[[2]]++
}
Drag options to blanks, or click blank then click option'
Ach
Bi
Didx
Attempts:
3 left
💡 Hint
Common Mistakes
Using the index variable instead of the character as map key.
Using different variable names in the loop and map access.
Not using rune type for map keys.
5fill in blank
hard

Fill all three blanks to create a slice of runes from str and print each rune.

DSA Go
str := "code"
runes := []rune([1])
for [2], [3] := range runes {
    fmt.Printf("%c ", r)
}
Drag options to blanks, or click blank then click option'
Astr
Bi
Cr
Drunes
Attempts:
3 left
💡 Hint
Common Mistakes
Using the string directly in the loop without conversion.
Using wrong variable names in the loop.
Not converting string to runes causing incorrect character handling.

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

  1. 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.
  2. Step 2: Differentiate bytes and characters

    Characters (runes) can be multiple bytes, so len counts bytes, not runes.
  3. Final Answer:

    The number of bytes in the string -> Option D
  4. 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

  1. 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.
  2. Step 2: Check syntax options

    Only s[2] is valid Go syntax for accessing a byte at index 2.
  3. Final Answer:

    s[2] -> Option B
  4. 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

  1. Step 1: Identify the character at index 1

    String "GoLang" indexed at 1 is byte for 'o'.
  2. Step 2: Convert byte to string for printing

    Using string(s[1]) converts byte 'o' to string "o".
  3. Final Answer:

    o -> Option A
  4. 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

  1. 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.
  2. Step 2: Identify error cause

    At i=len(s), s[i] causes index out of range runtime error.
  3. Final Answer:

    Loop condition causes index out of range error -> Option A
  4. 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

  1. Step 1: Understand Unicode handling in Go strings

    Go strings are byte slices; indexing gives bytes, not runes. To get runes, use range loop.
  2. 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.
  3. Final Answer:

    for _, r := range s { fmt.Println(string(r)) } -> Option C
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard