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 }