0Pricing
Zig Academy · บทเรียน

สตริงคือ []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 == 3

UTF-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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สตริงคือ []const u8
  2. ค่าตัวอักษรสตริงและอักขระหลีก
  3. การเปรียบเทียบและค้นหาไบต์
  4. จัดรูปแบบข้อความด้วย std.fmt
← กลับไปที่ Zig Academy