Trong Go, hàm len(s) trả về số byte trong chuỗi s. Tuy nhiên, các ký tự tiếng Việt như á, ê, đ, ư không chỉ là một byte. Chúng có thể chiếm 2–3 byte trong mã hóa UTF-8. Do đó ta nên dùng 1 hàm đặc biệt có tên RuneCountInString

Tên công nhận dài loằng ngoằng. Dưới đây là một ví dụ bổ sung về hàm cắt tring.
package main
import (
"fmt"
"unicode/utf8"
)
func CutString(s string, limit int) string {
runes := []rune(s)
if len(runes) > limit {
return string(runes[:limit])
}
return s
}
func main() {
fmt.Println(CutString("Lập Trình ORG Tiếng Việt rất đẹp", 9)) // Cắt an toàn
s2 := "Tiếng Việt"
fmt.Println(len(s2)) // Kết quả: 14
fmt.Println("Số ký tự:", utf8.RuneCountInString(s2)) // Kết quả: 10
s := "Xin chào, tiếng Việt!" // Vietnamese string
runeCount := utf8.RuneCountInString(s)
sliceCount := len([]rune(s))
byteCount := len(s)
fmt.Printf("String: %s\n", s)
fmt.Printf("Rune count (RuneCountInString): %d\n", runeCount) // 21
fmt.Printf("Rune count (slice): %d\n", sliceCount) // 21
fmt.Printf("Byte count: %d\n", byteCount) // 26
}