Ein Array hat feste Länge, die zum Typ gehört ([3]i32). Ein Slice ([]const i32) ist eine Sicht auf einen Bereich mit Zeiger und Länge, ohne Daten zu kopieren. Strings sind in Zig einfach Slices von Bytes ([]const u8), kein eigener Typ. Zugriffe außerhalb der Grenzen werden in Debug-Builds geprüft und brechen ab, statt Speicher zu beschädigen.
Slices schneidest du mit array[1..3].
const std = @import("std");
pub fn main() void {
const zahlen = [_]i32{ 5, 2, 9, 4 };
const mitte = zahlen[1..3]; // Slice { 2, 9 }
std.debug.print("{d} Elemente, erstes {d}\n", .{ mitte.len, mitte[0] });
const text: []const u8 = "Hallo Zig";
std.debug.print("{s} hat {d} Bytes\n", .{ text, text.len });
std.debug.print("{s}\n", .{text[0..5]}); // Hallo
}Merke
- Array: feste Länge im Typ
- Slice: Zeiger plus Länge
- Strings sind
[]const u8
Aufgabe
Gib die ersten drei Zeichen eines Textes aus.