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

การตัดสไลซ์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. อาร์เรย์ขนาดคงที่
  2. สไลซ์: พอยน์เตอร์บวกความยาว
  3. การตัดสไลซ์ด้วย array[start..end]
  4. การวนผ่านและแก้ไขสไลซ์
← กลับไปที่ Zig Academy