ホームページ >バックエンド開発 >Golang >Go言語に文字型はありますか?

Go言語に文字型はありますか?

青灯夜游
青灯夜游オリジナル
2021-06-04 17:08:242082ブラウズ

Go 言語には 2 つの文字タイプがあります: 1. ASCII コードの文字を表す byte タイプ (uint8 タイプとも呼ばれます); 2. UTF-8 文字を表す rune タイプ。中国語を処理するには、日本語またはその他の複合文字の場合は、ルーン タイプを使用する必要があります。ルーン型は int32 型と同等です。

Go言語に文字型はありますか?

このチュートリアルの動作環境: Windows 10 システム、GO 1.11.2、Dell G3 コンピューター。

文字列内の各要素は「文字」と呼ばれ、単一の文字列要素を走査または取得するときに文字を取得できます。

Go 言語には 2 つの文字型があります:

  • 1 つは uint8 型、つまり byte 型で、ASCII コードの文字を表します。 。

  • もう 1 つは、UTF-8 文字を表すルーン タイプです。中国語、日本語、またはその他の複合文字を処理する必要がある場合は、ルーン タイプを使用する必要があります。ルーン型は int32 型と同等です。

byte 型は uint8 のエイリアスです。1 バイトしか占有しない従来の ASCII エンコード文字にはまったく問題ありません。たとえば、var ch byte = 'A'、文字一重引用符で囲んで使用します。

ASCII コード テーブルでは、A の値は 65 であり、16 進表記では 41 であるため、次の記述は同等です。

var ch byte = 65 或 var ch byte = '\x41'      //(\x 总是紧跟着长度为 2 的 16 进制数)

別の可能な記述は、\ の後に長さ 3 の 8 進数 (例: \377)。

Go 言語は Unicode (UTF-8) もサポートしているため、文字は Unicode コード ポイントまたはルーンとも呼ばれ、メモリ内では int で表されます。文書では、一般に U hhh という形式が使用されます。ここで、h は 16 進数を表します。

Unicode 文字を記述する場合は、16 進数の前に接頭語 \u または \U を追加する必要があります。 Unicode は少なくとも 2 バイトを占めるため、int16 または int 型を使用して表現します。 4 バイトを使用する必要がある場合は \u 接頭辞を使用し、8 バイトを使用する必要がある場合は \U 接頭辞を使用します。

var ch int = '\u0041'
var ch2 int = '\u03B2'
var ch3 int = '\U00101234'
fmt.Printf("%d - %d - %d\n", ch, ch2, ch3) // integer
fmt.Printf("%c - %c - %c\n", ch, ch2, ch3) // character
fmt.Printf("%X - %X - %X\n", ch, ch2, ch3) // UTF-8 bytes
fmt.Printf("%U - %U - %U", ch, ch2, ch3)   // UTF-8 code point

出力:

65 - 946 - 1053236
A - β - r
41 - 3B2 - 101234
U+0041 - U+03B2 - U+101234

書式指定子 %c は文字を表すために使用されます。文字とともに使用すると、%v または %d は文字を表すために使用される整数を出力し、%U は出力します。 U hhaha の形式の文字列。

Unicode パッケージには、文字をテストするための組み込み関数がいくつかあります。これらの関数の戻り値は、以下に示すようにブール値です (ch は文字を表します):

  • 文字かどうかの判定:unicode.IsLetter(ch)

  • 数字かどうかの判定:unicode.IsDigit(ch)

  • 数値かどうかの判断 空白記号の場合: unicode.IsSpace(ch)

推奨学習: Golang チュートリアル

以上がGo言語に文字型はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。