##Go言語で文字列の長さを取得する場合
Go言語の文字列の特徴として、UTF-8エンコードされた「byte」配列のように振る舞うことが出来る。
このため、配列と同様に**「len」組み込み関数**を使用して長さを取得し、インデックスを使ったアクセスなどが可能になる。
ちなみに「len」組み込み関数が返すのは**「文字数」ではなく「バイト長」**。
なので今回の例では、「len」組み込み関数を使ったパターンになる。
*なおここでは「配列」と表記しているが、実際にはスライス
string_len.go
package main
import "fmt"
func main() {
//string型の変数を宣言
var en string = "golang"
var ja string = "Go言語"
//文字列の長さ(バイト長)を出力
fmt.Println(en, "len:", len(en))
fmt.Println(ja, "len:", len(ja))
}
実行結果
user$ go run string_len.go
golang len: 6
Go言語 len: 8
取得するのが「バイト長」なので、「Go言語」の場合文字数の「4」ではなくバイト長の「8」が実行結果として出力されている。
##Go言語で文字数を取得する場合
一方、文字数を取得するには「unicode/utf-8」パッケージの**「RuneCountInString」関数**を使用する。
※RuneとはUnicode文字のこと
string_count.go
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
//string型の変数を宣言
var ja string = "Go言語"
//文字数を出力
fmt.Println(ja, "len:", utf8.RuneCountInString(ja))
}
実行結果
user$ go run string_count.go
Go言語 len: 4
「Go言語」の文字数である「4」が無事に出力されました!