Go String Length – Measure String Size with len() in Go (2025 Guide)
Introduction – How to Find String Length in Go?
In Go, the length of a string is measured using the built-in len() function. However, it’s important to know that len() returns the number of bytes, not characters. This matters especially when working with Unicode or multibyte characters like emojis or accented letters.
In this section, you’ll learn:
- How to use
len()to get string length - Difference between byte length and character count
- How to count Unicode characters (runes)
- Best practices when handling multi-language strings
Basic Syntax – Get String Length with len()
s := "Hello"
fmt.Println(len(s))
Output:
5
len(s) returns the number of bytes in the string.
Example – Multibyte Characters (Unicode)
s := "Go"
fmt.Println(len(s))
Output:
6
Although it looks like 3 characters, len(s) returns 6 bytes because the emoji takes 4 bytes.
Count Unicode Characters (Runes) Using utf8.RuneCountInString()
To get the actual number of characters (runes), use the utf8 package:
import "unicode/utf8"
s := "Go"
fmt.Println(utf8.RuneCountInString(s))
Output:
3
This returns the correct character count, not just byte count.
What’s a Rune?
In Go:
- A string is a sequence of bytes
- A rune is a Unicode code point, usually a character
String Length Comparison Table
| String | len() (Bytes) | utf8.RuneCountInString() (Characters) |
|---|---|---|
"Hello" | 5 | 5 |
"Go" | 6 | 3 |
"こんにちは" | 15 | 5 |
Use the right function based on your use case!
Summary – Recap & Next Steps
In Go, measuring string length depends on whether you care about bytes or characters. Use len() for low-level byte processing and utf8.RuneCountInString() for human-readable character count.
Key Takeaways:
len(string)returns byte length- Unicode characters may span multiple bytes
- Use
utf8.RuneCountInString()to get actual character count - Ideal for UI, validation, and multilingual support
Next: Learn about Go String Manipulation like concatenation, substring, and comparison techniques.
FAQs – Go String Length
What does len(s) return for a string in Go?
It returns the number of bytes, not characters.
How do I count characters in a Unicode string in Go?
Use utf8.RuneCountInString(s) from the unicode/utf8 package.
Why is len("") equal to 4?
Because the emoji is stored using 4 bytes in UTF-8 encoding.
Can I use len() for string validation?
Only if you care about byte limits. For character count (e.g. input length), use utf8.RuneCountInString().
Is len([]rune(s)) same as utf8.RuneCountInString(s)?
Yes. Converting the string to a rune slice and taking its length gives the same result.
Share Now :
