ホームページ > バックエンド開発 > Golang > golang 文字を配列に変換

golang 文字を配列に変換

WBOY
リリース: 2023-05-12 20:34:35
オリジナル
822 人が閲覧しました

Golang は Google が開発したプログラミング言語で、その設計目標はソフトウェア開発の効率と保守性を向上させることです。 Golang では、文字と文字列は 2 つの異なるデータ型ですが、文字列を文字配列に変換する必要が生じることがよくあります。この記事ではGolangで文字を配列に変換する方法を紹介します。

Golang では、文字と文字列の概念は比較的明確です。文字は Unicode コード ポイントであり 4 バイトを占めますが、文字列は UTF-8 を使用してエンコードされた複数の文字のシーケンスであり、各文字は 1 ~ 4 バイトを占めます。したがって、文字列を文字配列に変換する必要がある場合は、次の質問を考慮する必要があります:

  • 文字配列の要素の型は何ですか?
  • 文字配列の長さはどれくらいですか?
  • 文字列を文字配列に変換するにはどうすればよいですか?

以下、一つずつ説明していきます。

  1. 文字配列の要素型

Golang では、文字のデータ型は int32 型のエイリアスである rune です。したがって、文字配列を定義するときは、その要素の型を rune にする必要があります。

var arr []rune
ログイン後にコピー
  1. 文字配列の長さ

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)
ログイン後にコピー
  1. 文字列を文字配列に変換する

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート