中級 › len(s)がUTF-8のバイト数を返し文字数と一致しない › パターン1
len(s)がUTF-8のバイト数を返し文字数と一致しない
Goの文字列はUTF-8のバイト列として保持されており、len(s)は文字数ではなくバイト数を返します。
1 package main 2 3 import "fmt" 4 5 func main() { 6 s := "日本語" 7 fmt.Println(______________) ^ 8 }
出力: 9文字数としては3のはず
空欄を埋めて実行を通す
「日本語」は3文字ですが、UTF-8では1文字が3バイトなのでlen(s)は9を返します。文字数を数えたいなら[]rune(s)に変換してから数える必要があります。
次の問題