文字列は[]const u8
Zigの文字列がバイトスライスである理由を学びます。
「文字列は[]const u8」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
文字列型はありません
Zig には専用の文字列型がありません。テキストは単なるバイトのスライスなので、配列で覚えたツールをそのまま再利用できます。📦
単なるバイトです
Zig の文字列は []const u8 型です。これは 8 ビットバイトの並びを読み取り専用で見るウィンドウです。各バイトには 0 から 255 までの数値が 1 つ格納されます。
const greeting: []const u8 = "hello";const である理由
文字列リテラルは読み取り専用メモリに置かれるため、型は []const u8 です。const は、このスライスを通じてバイトを読み取れても、書き込むことはできないという意味です。
u8 は 1 バイトです
要素型の u8 は符号なし 8 ビット整数です。テキストを u8 として扱うことで、Zig は文字列が特別な文字ではなく、生のバイトであることを明確にします。
スライスには長さがあります
スライスはポインターと長さの両方を持つため、文字列自身がサイズを把握しています。別の長さ変数や終端子は必要ありません。
const name = "Zig";
// name.len == 3慣例として UTF-8
Zig のソースファイルは UTF-8 なので、リテラルはテキストを UTF-8 バイトとして格納します。絵文字やアクセント付きの文字は、1 バイトではなく複数バイトになることがあります。
長さはバイト数を数えます
テキストはバイトで構成されるため、.len が返すのは文字数ではなくバイト数です。通常の ASCII では、この 2 つの数値は完全に一致します。
const s = "abc";
std.debug.print("{}", .{s.len}); // 3インデックス指定でバイトが返ります
文字列をインデックス指定すると、文字オブジェクトではなく単一の u8 バイト値が返されます。ASCII では、そのバイトが文字のコードです。
const s = "AB";
const first = s[0]; // 65, the Aヌル終端は必要ありません
C とは異なり、Zig のスライスは末尾のゼロバイトによって終端を示す必要がありません。格納された長さによって、テキストがどこで終わるかがすでに分かります。
文字列を出力する
{s} フォーマット指定子を使うと、テキストを出力できます。これにより、Zig はバイトを数値ではなく文字列として表示します。
std.debug.print("{s}\n", .{"hello"});変更可能なバイトには [] u8 が必要です
const を外すと、書き込み可能な []u8 スライスになります。スライスが自分の所有するメモリ上にある限り、バイトをその場で変更できます。
確認問題
Zig の文字列リテラルの実際の型について考えてみてください。
まとめ
Zig のテキストは単なる []const u8 であり、長さを持つ読み取り専用バイト列だと学びました。慣例として UTF-8 が使われ、バイト単位でインデックス指定や長さの取得を行います。🎯
AI チューターと学ぶ Zig — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「文字列は[]const u8」レッスンは無料ですか?
はい。「文字列は[]const u8」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「文字列は[]const u8」で何を学びますか?
Zigの文字列がバイトスライスである理由を学びます。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「文字列は[]const u8」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 文字列は[]const u8
- 文字列リテラルとエスケープ
- バイトを比較・検索する
- std.fmtでテキストをフォーマットする