การตัดสไลซ์ด้วย array[start..end]
สร้างมุมมองย่อยโดยไม่ต้องคัดลอก
การตัดสไลซ์ด้วย array[start..end] เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัดมุมมองออกมา
บางครั้งคุณต้องการเพียงบางส่วนของอาร์เรย์ การทำ slicing ช่วยให้คุณดึงช่วงย่อยออกมาเป็น slice ใหม่ได้โดยไม่ต้องคัดลอกสมาชิกใด ๆ ✂️
รูปแบบการระบุช่วง
เขียนจุดเริ่มต้นและจุดสิ้นสุดไว้ในวงเล็บเหลี่ยม โดยคั่นด้วยจุดสองจุด: array[start..end] ผลลัพธ์คือ slice ที่ครอบคลุมตำแหน่งเหล่านั้น
const part = data[1..3];จุดสิ้นสุดไม่รวมอยู่ด้วย
ดัชนีจุดสิ้นสุดเป็นแบบไม่รวมปลายช่วง ดังนั้น array[1..3] จะรวมตำแหน่ง 1 และ 2 แต่หยุดก่อนถึง 3 ผลลัพธ์จึงมีความยาว 2
Slice ไปจนถึงท้ายสุด
ละจุดสิ้นสุดไว้เพื่อให้ช่วงดำเนินไปจนถึงสมาชิกตัวสุดท้าย data[2..] หมายถึงทุกอย่างตั้งแต่ดัชนี 2 เป็นต้นไป
const tail = data[2..];Slice ทั้งอาร์เรย์
การใช้ [0..] จะเปลี่ยนอาร์เรย์ทั้งชุดให้เป็น slice วิธีนี้เป็นวิธีทั่วไปในการส่งอาร์เรย์เต็มชุดให้โค้ดที่รับ slice
const all = data[0..];ไม่มีการคัดลอก
การทำ slicing เพียงคำนวณพอยน์เตอร์และความยาวใหม่ สมาชิกยังคงใช้ร่วมกันกับอาร์เรย์เดิม จึงทำงานได้รวดเร็วและไม่ต้องจองหน่วยความจำ
ทำ Slicing กับ Slice
คุณสามารถทำ slicing กับ slice ได้เช่นเดียวกับอาร์เรย์ ช่วงใหม่จะอ้างอิงจากจุดเริ่มต้นของ slice นั้นเอง ทำให้มุมมองแคบลงไปอีก
const inner = part[0..1];ตรวจจับช่วงนอกขอบเขต
หาก start หรือ end อยู่นอกข้อมูล บิลด์แบบปลอดภัยจะเกิด panic ขณะทำงาน วิธีนี้ช่วยหยุดไม่ให้คุณอ่านหน่วยความจำที่ไม่เคยเป็นของคุณ
Slice ที่ทราบขนาดขณะคอมไพล์
เมื่อทราบขอบเขตขณะคอมไพล์ ผลลัพธ์อาจเป็นพอยน์เตอร์ไปยังอาร์เรย์ที่มีความยาวตายตัวระบุอยู่ในชนิดข้อมูล
Slice ที่สิ้นสุดด้วย Sentinel
เพิ่มตัวสิ้นสุดด้วย [start..end :0] เพื่อรับประกันว่าท้ายช่วงมีเลขศูนย์ วิธีนี้มีประโยชน์เมื่อส่งสตริงให้โค้ดภาษา C
const cstr = buf[0..n :0];ความยาวจากช่วง
ความยาวของ slice คือend ลบด้วย startโดยตรง ดังนั้น data[2..5] จะให้ slice ที่มีค่า len เท่ากับ 3 เสมอ
const three = data[2..5]; // len == 3ตรวจสอบความเข้าใจอย่างรวดเร็ว
คุณมี const data = [_]i32{ 0, 1, 2, 3, 4 } ความยาวของ data[1..4] เท่าใด
สรุปทบทวน
รูปแบบ array[start..end] จะตัดมุมมองย่อยออกมา: end ไม่รวมอยู่ด้วย ละ end เพื่อเลือกไปจนถึงท้ายสุด ไม่มีการคัดลอก และยังตรวจสอบขอบเขตอยู่ 🎯
คำถามที่พบบ่อย
บทเรียน “การตัดสไลซ์ด้วย array[start..end]” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตัดสไลซ์ด้วย array[start..end]” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตัดสไลซ์ด้วย array[start..end]”
สร้างมุมมองย่อยโดยไม่ต้องคัดลอก คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การตัดสไลซ์ด้วย array[start..end]” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อาร์เรย์ขนาดคงที่
- สไลซ์: พอยน์เตอร์บวกความยาว
- การตัดสไลซ์ด้วย array[start..end]
- การวนผ่านและแก้ไขสไลซ์