Golang は Google が開発したプログラミング言語で、その設計目標はソフトウェア開発の効率と保守性を向上させることです。 Golang では、文字と文字列は 2 つの異なるデータ型ですが、文字列を文字配列に変換する必要が生じることがよくあります。この記事ではGolangで文字を配列に変換する方法を紹介します。
Golang では、文字と文字列の概念は比較的明確です。文字は Unicode コード ポイントであり 4 バイトを占めますが、文字列は UTF-8 を使用してエンコードされた複数の文字のシーケンスであり、各文字は 1 ~ 4 バイトを占めます。したがって、文字列を文字配列に変換する必要がある場合は、次の質問を考慮する必要があります:
以下、一つずつ説明していきます。
Golang では、文字のデータ型は int32 型のエイリアスである rune です。したがって、文字配列を定義するときは、その要素の型を rune にする必要があります。
var arr []rune
Golang では、len() 関数を使用して文字列の長さを取得できますが、文字列の長さは含まれる文字数と等しくありません。 Unicode 文字は複数のバイトで構成されている場合があるため、文字列の長さは文字列に含まれる文字数と異なることがよくあります。文字列を文字の配列に正しく変換するには、unicode/utf8 パッケージの関数を使用して、文字列に含まれる文字数をカウントする必要があります。
import "unicode/utf8" func countChars(s string) int { return utf8.RuneCountInString(s) } length := countChars("Hello, world!") arr := make([]rune, length)
Golang には、文字列を文字配列に変換する 2 つの関数、[]rune() と []byte() が用意されています。 。このうち []rune() は文字列をルーン型の配列に変換し、各文字は 4 バイトを占有します; []byte() は文字列をバイト型の配列に変換し、各文字は 1 バイトを占有しますが、文字化けが発生する場合があります。
s := "Hello, 世界" arr := []rune(s) // 将字符串s转换成rune类型的数组
完全なコードは次のとおりです:
package main import ( "fmt" "unicode/utf8" ) func countChars(s string) int { return utf8.RuneCountInString(s) } func main() { s := "Hello, 世界" length := countChars(s) arr := make([]rune, length) for i, c := range s { arr[i] = c } fmt.Println(arr) }
実行結果は次のとおりです:
[72 101 108 108 111 44 32 19990 30028]
この記事の導入を通じて、文字列を次のように変換する方法を理解しました。 Golang の文字配列。これは、テキスト データを操作したり、文字列にアルゴリズムを実装したりする場合に役立ちます。
以上がgolang 文字を配列に変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。