🏗️ Structs: Tạo Kiểu Dữ Liệu Riêng
🎯 Mục Tiêu Bài Học
Sau khi hoàn thành bài học này, bạn sẽ:
- ✅ Hiểu được struct là gì và khi nào dùng
- ✅ Định nghĩa structs với named fields
- ✅ Tạo instances của structs
- ✅ Truy cập và sửa đổi fields
- ✅ Sử dụng tuple structs và unit-like structs
- ✅ Áp dụng struct update syntax
🤔 Struct Là Gì?
Ẩn Dụ Cuộc Sống: Hồ Sơ Nhân Viên
Struct giống như một mẫu hồ sơ:
📋 Hồ Sơ Nhân Viên:
- Có các mục cố định: Họ tên, Tuổi, Email, Lương
- Mỗi nhân viên có một hồ sơ riêng
- Tất cả hồ sơ cùng định dạng
🏗️ Struct Trong Rust:
- Template (khuôn mẫu) cho kiểu dữ liệu
- Nhóm nhiều giá trị liên quan
- Mỗi field có tên và kiểu riêng
Tại Sao Cần Structs?
Không dùng struct (khó quản lý):
fn main() {
let name = String::from("An");
let age = 25;
let email = String::from("[email protected]");
let salary = 5000;
// Phải truyền nhiều tham số
print_info(name, age, email, salary);
}
fn print_info(name: String, age: u32, email: String, salary: u32) {
println!("{} - {} - {} - {}", name, age, email, salary);
}
Dùng struct (rõ ràng, dễ quản lý):
struct Employee {
name: String,
age: u32,
email: String,
salary: u32,
}
fn main() {
let employee = Employee {
name: String::from("An"),
age: 25,
email: String::from("[email protected]"),
salary: 5000,
};
print_info(&employee);
}
fn print_info(emp: &Employee) {
println!("{} - {} - {} - {}", emp.name, emp.age, emp.email, emp.salary);
}
Lợi ích:
- ✅ Nhóm dữ liệu liên quan
- ✅ Rõ ràng, dễ đọc
- ✅ Dễ mở rộng thêm fields
- ✅ Type safety