Go
にて文字列の文字数を取得したい時に
len
の場合
byte
で数えるまたは一つの Unicode character
は1~4
bytesが使われるため
英語以外の文字列はうまく文字数を取れないことがあります。
unicode/utf-8
パッケージの RuneCountInString
関数を使えば
文字列の文字数を取得できるようになります。
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
name := "テスト太郎"
fmt.Println("len:", len(name))
fmt.Println("RuneCountInString:", utf8.RuneCountInString(name))
}
output
len: 15
RuneCountInString: 5