Bird
Raised Fist0
DSA Goprogramming~20 mins

How Strings Work Differently Across Languages in DSA Go - Debugging & Practice

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
String Mastery Across Languages
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Go code with string indexing?
Consider the following Go code that indexes a string containing Unicode characters. What will be printed?
DSA Go
package main
import "fmt"
func main() {
    s := "GoπŸ’»"
    fmt.Printf("%d\n", s[2])
}
A240
B111
CSyntaxError
DRuntimeError
Attempts:
2 left
πŸ’‘ Hint
Remember that indexing a string in Go returns a byte, not a rune.
❓ Predict Output
intermediate
2:00remaining
What is the output of this Python string slicing code?
Given the Python code below, what is the output?
DSA Go
s = 'cafΓ©'
print(s[3])
AIndexError
BSyntaxError
Ce
DΓ©
Attempts:
2 left
πŸ’‘ Hint
Python strings are sequences of Unicode characters.
πŸ”§ Debug
advanced
2:00remaining
Why does this JavaScript string length differ from expected?
Consider this JavaScript code snippet. Why does the length property not match the number of visible characters?
DSA Go
const s = 'πŸ‘©πŸ‘©πŸ‘§πŸ‘¦';
console.log(s.length);
ABecause length counts Unicode code points correctly
BBecause length counts UTF-16 code units, not user-perceived characters
CBecause length counts bytes in UTF-8 encoding
DBecause length counts grapheme clusters
Attempts:
2 left
πŸ’‘ Hint
JavaScript strings use UTF-16 encoding internally.
🧠 Conceptual
advanced
2:00remaining
How do Go and Python differ in string mutability?
Which statement correctly describes the difference in string mutability between Go and Python?
AGo strings are mutable; Python strings are immutable
BBoth Go and Python strings are mutable
CBoth Go and Python strings are immutable
DGo strings are immutable; Python strings are mutable
Attempts:
2 left
πŸ’‘ Hint
Think about whether you can change characters inside a string directly.
πŸš€ Application
expert
3:00remaining
How to correctly iterate over Unicode characters in Go?
Given the Go string s := "Hello, δΈ–η•Œ", which code snippet correctly prints each Unicode character on a new line?
Afor _, r := range s { fmt.Println(string(r)) }
Bfor i, _ := range s { fmt.Println(string(s[i])) }
Cfor i := 0; i < len(s); i++ { fmt.Println(string(s[i])) }
Dfor i := 0; i < len(s); i += 2 { fmt.Println(string(s[i])) }
Attempts:
2 left
πŸ’‘ Hint
Use range to iterate over runes, not bytes.

Practice

(1/5)
1. In Go, what is the type of a string internally?
var s = "hello"
easy
A. A sequence of bytes representing UTF-8 encoded characters
B. An array of Unicode code points (runes)
C. A linked list of characters
D. A pointer to a null-terminated character array

Solution

  1. Step 1: Understand Go string representation

    Go strings are immutable sequences of bytes, typically UTF-8 encoded.
  2. Step 2: Compare with other languages

    Unlike some languages that use arrays of Unicode code points, Go uses bytes internally.
  3. Final Answer:

    A sequence of bytes representing UTF-8 encoded characters -> Option A
  4. Quick Check:

    Go strings = UTF-8 bytes [OK]
Hint: Remember Go strings are byte sequences, not rune arrays [OK]
Common Mistakes:
  • Thinking Go strings store runes directly
  • Assuming null-terminated strings like C
  • Confusing with linked list or array types
2. Which of the following is the correct way to get the length of a string in Go?
s := "hello"
easy
A. length(s)
B. s.length()
C. len(s)
D. s.len

Solution

  1. Step 1: Recall Go built-in function for length

    Go uses the built-in function len() to get the length of strings and slices.
  2. Step 2: Check other options

    Methods like s.length() or s.len do not exist in Go; length(s) is not valid syntax.
  3. Final Answer:

    len(s) -> Option C
  4. Quick Check:

    Use len() for string length in Go [OK]
Hint: Use len() function to get string length in Go [OK]
Common Mistakes:
  • Using method calls like s.length() from other languages
  • Trying to access length as a property
  • Using undefined functions like length()
3. What will be the output of this Go code?
package main
import "fmt"
func main() {
  s := "Go😊"
  fmt.Println(len(s))
}
medium
A. 3
B. 6
C. 4
D. 5

Solution

  1. Step 1: Analyze string content and encoding

    The string "Go😊" has 'G' and 'o' as 1 byte each, and the emoji '😊' is a 4-byte UTF-8 character.
  2. Step 2: Calculate total byte length

    Total bytes = 1 (G) + 1 (o) + 4 (😊) = 6 bytes.
  3. Step 3: Check len() output

    len(s) returns the number of bytes, so output is 6.
  4. Final Answer:

    6 -> Option B
  5. Quick Check:

    len() counts bytes, not characters [OK]
Hint: len() returns bytes count, not character count [OK]
Common Mistakes:
  • Assuming len() returns number of characters
  • Ignoring multi-byte UTF-8 characters
  • Confusing bytes with runes
4. Identify the error in this Go code that tries to print each character of a string:
package main
import "fmt"
func main() {
  s := "Go"
  for i := 0; i < len(s); i++ {
    fmt.Println(s[i])
  }
}
medium
A. It prints byte values, not characters
B. Syntax error in for loop
C. s[i] is invalid syntax
D. Missing import for fmt

Solution

  1. Step 1: Understand s[i] in Go strings

    Accessing s[i] returns the byte at index i, not a character or string.
  2. Step 2: Check output of fmt.Println(s[i])

    It prints the numeric byte value (ASCII code), not the character itself.
  3. Final Answer:

    It prints byte values, not characters -> Option A
  4. Quick Check:

    s[i] = byte, prints number [OK]
Hint: s[i] gives byte, convert to rune or string to print char [OK]
Common Mistakes:
  • Expecting s[i] to print characters directly
  • Ignoring byte vs rune difference
  • Assuming syntax error where none exists
5. How can you correctly iterate over each Unicode character in a Go string to print them?
Choose the correct code snippet.
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 i, c := range s { fmt.Println(s[i]) }
D. for _, r := range s { fmt.Println(string(r)) }

Solution

  1. Step 1: Understand iteration over strings in Go

    Using 'for _, r := range s' iterates over runes (Unicode code points), not bytes.
  2. Step 2: Check printing each character

    Converting rune 'r' to string prints the actual character correctly.
  3. Step 3: Analyze other options

    for i := 0; i < len(s); i++ { fmt.Println(string(s[i])) } prints bytes as strings, which may break multi-byte chars; C and D print bytes, not runes.
  4. Final Answer:

    for _, r := range s { fmt.Println(string(r)) } -> Option D
  5. Quick Check:

    Use range to get runes for correct Unicode iteration [OK]
Hint: Use 'for _, r := range s' to iterate Unicode chars [OK]
Common Mistakes:
  • Iterating by byte index instead of runes
  • Printing bytes as characters causing errors
  • Confusing index and rune variables
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