สตริงคือ []const u8
เหตุใดสตริงของ Zig จึงเป็นสไลซ์ของไบต์
สตริงคือ []const u8 เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไม่มีชนิด String
Zig ไม่มีชนิด string โดยเฉพาะ ข้อความหนึ่งชิ้นเป็นเพียง slice ของไบต์ ดังนั้นคุณจึงใช้เครื่องมือเดียวกับที่รู้จักจากอาร์เรย์ได้ 📦
มันคือไบต์เท่านั้น
string ของ Zig มีชนิดเป็น []const u8 ซึ่งเป็นหน้าต่างแบบอ่านอย่างเดียวเหนือชุดไบต์ขนาด 8 บิต แต่ละไบต์เก็บตัวเลขหนึ่งค่าตั้งแต่ 0 ถึง 255
const greeting: []const u8 = "hello";เหตุผลที่ใช้ const
ค่าคงที่สตริงอยู่ในหน่วยความจำแบบอ่านอย่างเดียว ดังนั้นชนิดของมันคือ []const u8 const หมายความว่าคุณอ่านไบต์ได้ แต่ไม่สามารถเขียนผ่าน slice นี้ได้
u8 คือหนึ่งไบต์
ชนิดสมาชิก u8 คือจำนวนเต็มไม่มีเครื่องหมายขนาด 8 บิต การมองข้อความเป็น u8 ทำให้ Zig แสดงความจริงอย่างตรงไปตรงมา: สตริงคือไบต์ดิบ ไม่ใช่อักขระวิเศษ
Slice มีความยาว
slice เก็บทั้งพอยน์เตอร์และความยาวไว้ด้วยกัน ดังนั้นสตริงจึงทราบขนาดของตัวเอง คุณไม่จำเป็นต้องมีตัวแปรความยาวแยกต่างหากหรือตัวสิ้นสุด
const name = "Zig";
// name.len == 3UTF-8 ตามธรรมเนียม
ไฟล์ต้นฉบับของ Zig เป็น UTF-8 ดังนั้นค่าคงที่จึงเก็บข้อความเป็นไบต์ UTF-8 อีโมจิหรือตัวอักษรที่มีเครื่องหมายกำกับหนึ่งตัวอาจใช้หลายไบต์ ไม่ใช่เพียงหนึ่งไบต์
ความยาวนับเป็นไบต์
เนื่องจากข้อความคือไบต์ .len จึงคืนจำนวนไบต์ ไม่ใช่จำนวนอักขระ สำหรับ ASCII ธรรมดา ตัวเลขทั้งสองจะตรงกันพอดี
const s = "abc";
std.debug.print("{}", .{s.len}); // 3ดัชนีคืนค่าเป็นไบต์
การเข้าถึงสตริงด้วยดัชนีจะคืนค่าไบต์ u8 หนึ่งตัว ไม่ใช่วัตถุอักขระ สำหรับ ASCII ไบต์นั้นคือรหัสของตัวอักษร
const s = "AB";
const first = s[0]; // 65, the Aไม่จำเป็นต้องมีตัวสิ้นสุดค่า Null
ต่างจากภาษา C ตรงที่ Zig slice ไม่ต้องอาศัยไบต์ศูนย์ที่อยู่ท้ายสุดเพื่อระบุจุดจบ ความยาวที่เก็บไว้บอกโค้ดอยู่แล้วว่าข้อความสิ้นสุดที่ใด
พิมพ์ String
คุณพิมพ์ข้อความด้วยตัวระบุรูปแบบ {s} ซึ่งบอกให้ Zig แสดงไบต์เป็นสตริงแทนที่จะแสดงเป็นตัวเลข
std.debug.print("{s}\n", .{"hello"});ไบต์ที่แก้ไขได้ต้องใช้ [] u8
นำ const ออกเพื่อให้ได้ slice []u8 ที่เขียนได้ จากนั้นคุณจะเปลี่ยนไบต์ในตำแหน่งเดิมได้ ตราบใดที่ไบต์เหล่านั้นอยู่ในหน่วยความจำที่คุณเป็นเจ้าของ
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ลองคิดถึงชนิดข้อมูลจริงที่อยู่เบื้องหลังค่าคงที่สตริงของ Zig
สรุปทบทวน
คุณได้เรียนรู้ว่าข้อความใน Zig เป็นเพียง []const u8: ไบต์แบบอ่านอย่างเดียวที่มีความยาว ใช้ UTF-8 ตามธรรมเนียม และเข้าถึงหรือนับขนาดโดยนับเป็นไบต์ 🎯
คำถามที่พบบ่อย
บทเรียน “สตริงคือ []const u8” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สตริงคือ []const u8” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สตริงคือ []const u8”
เหตุใดสตริงของ Zig จึงเป็นสไลซ์ของไบต์ คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “สตริงคือ []const u8” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สตริงคือ []const u8
- ค่าตัวอักษรสตริงและอักขระหลีก
- การเปรียบเทียบและค้นหาไบต์
- จัดรูปแบบข้อความด้วย std.fmt