勢い良くlen()で数えると、byte数になってしまいます。 unicode/utf8 パッケージのRuneCountInString()を使います。 または、[]runeにキャストすることで、len()でも数えられます。 package main import ( "fmt" "unicode/utf8" ) func main() { str := "Hello, 世界" fmt.Printf("len: %d (byte)\n", len(str)) fmt.Printf("Rune: %d (rune)\n", utf8.RuneCountInString(str)) fmt.Printf("Rune: %d (rune)\n", len([]rune(str))) } Go Playground 文字数は9文字。len()では13(byte)になり、RuneCountInStri