22/04/2026 07:11น.

ชนิดข้อมูลพื้นฐานใน Rust: เจาะลึก Scalar และ Compound types (Integers, Tuples, Arrays) | Rust The Series EP.5
#ภาษา Rust
#Data Types
#Scalar types
#Compound types
#สอน Rust
#Superdev Academy
ใน EP.4 เราได้รู้วิธีประกาศตัวแปรกันไปแล้ว แต่สิ่งที่มาคู่กับตัวแปรเสมอคือ "ชนิดของข้อมูล" (Data Types) ครับ ใน Rust ข้อมูลทุกอย่างจะต้องมีประเภทที่ชัดเจนเพื่อให้ Compiler มั่นใจว่าโปรแกรมจะทำงานได้อย่างปลอดภัย
เราสามารถแบ่ง Data Types ใน Rust ออกเป็น 2 กลุ่มใหญ่ คือ Scalar (ค่าเดี่ยว) และ Compound (ค่ากลุ่ม)
1. Scalar Types (ประเภทข้อมูลค่าเดี่ยว)
Scalar คือชนิดข้อมูลที่เก็บ "ค่าเดียว" ในตัวมันเอง มีอยู่ 4 ประเภทหลัก:
🔢 Integers (จำนวนเต็ม)
Rust มีจำนวนเต็มให้เลือกใช้ตามขนาดหน่วยความจำ (bits) แบ่งเป็นแบบมีเครื่องหมาย (i) และไม่มีเครื่องหมาย (u):
Length | Signed | Unsigned |
8-bit |
|
|
32-bit |
|
|
64-bit |
|
|
arch |
|
|
Note:
isizeและusizeจะเปลี่ยนขนาดตามสถาปัตยกรรมคอมพิวเตอร์ที่คุณใช้ (เช่น 64-bit บน Mac M4) มักใช้ในการระบุ Index ของ Array ครับ
🥧 Floating-Point (ทศนิยม)
มี 2 ขนาดคือ f32 และ f64 (Default)
Rust
let x = 2.0; // f64 โดยอัตโนมัติ
let y: f32 = 3.0; // ประกาศแบบระบุ f32
✅ Booleans (ตรรกศาสตร์)
มีแค่สองค่าคือ true และ false ใช้พื้นที่ 1 Byte
Rust
let is_active = true;
let is_finished: bool = false;
🔤 Characters (ตัวอักษร)
ใน Rust char จะใช้ Single Quotes (') และมีขนาด 4 Bytes เพราะมันเก็บค่า Unicode Scalar Value หมายความว่ามันเก็บได้มากกว่าตัวอักษรภาษาอังกฤษ (รวมถึง Emoji และภาษาไทยด้วย!)
Rust
let c = 'z';
let heart_eye_emoji = '😻';
2. Compound Types (ประเภทข้อมูลแบบกลุ่ม)
Compound คือการนำหลายๆ ค่ามารวมกันไว้ในตัวแปรเดียว มี 2 ประเภทหลัก:
📦 Tuples
ใช้เก็บค่าหลายประเภทมารวมกัน แต่ "ขนาดต้องคงที่" (เพิ่ม/ลดไม่ได้หลังจากประกาศ)
Rust
let person: (&str, i32, bool) = ("Ploy", 25, true);
// การดึงค่าออกมา (Destructuring)
let (name, age, status) = person;
// หรือดึงผ่าน Index
let name = person.0;
🔢 Arrays
ใช้เก็บค่า "ประเภทเดียวกันเท่านั้น" และมี "ขนาดที่แน่นอน" เก็บข้อมูลไว้ใน Stack ซึ่งทำให้ทำงานได้เร็วมาก
Rust
let months = ["Jan", "Feb", "Mar"];
let numbers: [i32; 5] = [1, 2, 3, 4, 5]; // [Type; Length]
// การดึงค่า
let first = numbers[0];
ข้อควรระวัง: ถ้าคุณพยายามดึงข้อมูลเกิน Index ที่มี (Out of bounds) Rust จะทำให้โปรแกรม "Panic" (หยุดทำงาน) ทันทีเพื่อความปลอดภัยครับ
สรุป
การเลือกใช้ Type ที่เหมาะสมไม่เพียงแต่ช่วยประหยัด Memory แต่ยังช่วยให้ Compiler ของ Rust เป็น "ผู้ช่วย" ตรวจสอบความถูกต้องของ Logic ให้เราได้ด้วย
ใน EP.6 เตรียมตัวพบกับเรื่อง Control Flow เราจะไปดูวิธีการใช้ if-else และการวนลูปรูปแบบต่างๆ เพื่อให้โปรแกรมของเราทำงานได้หลากหลายเงื่อนไขมากขึ้นครับ!
🎯 ติดตามความรู้สาย Dev แบบสุดจัดได้ที่:
ไม่อยากพลาดบทความเทคนิคเชิงลึกและอัปเดตใหม่ๆ จากเรา ติดตาม Superdev Academy ได้ทุกช่องทางที่นี่ครับ:
🔵 Facebook: Superdev Academy Thailand (อัปเดตข่าวสารและบทความใหม่)
🎬 YouTube: Superdev Academy Channel (ติวเข้มแบบวิดีโอ)
📸 Instagram: @superdevacademy (เกร็ดความรู้สั้นๆ และเบื้องหลังการทำงาน)
🎬 TikTok: @superdevacademy (Tips & Tricks ฉบับย่อยง่าย)
🌐 Website: superdevacademy.com (คลังบทความและคอร์สเรียนฉบับเต็ม)