Khái niệm
Kiểu dữ liệu tổng hợp cho phép gom nhiều trường thông tin liên quan vào cùng một đơn vị logic. Nhờ đó, dữ liệu phức tạp có thể được biểu diễn rõ ràng hơn thay vì tách thành nhiều biến rời rạc.
Ví dụ mô tả sinh viên
from dataclasses import dataclass
@dataclass
class Student:
name: str
age: int
student = Student("Lan", 18)
print(student.name)
program RecordDemo;
type
Student = record
Name: String;
Age: Integer;
end;
var
studentData: Student;
begin
studentData.Name := 'Lan';
studentData.Age := 18;
Writeln(studentData.Name);
end.
#include <stdio.h>
struct Student {
char name[20];
int age;
};
int main(void) {
struct Student student = {"Lan", 18};
printf("%s\n", student.name);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
int age;
};
int main() {
Student student = {"Lan", 18};
cout << student.name << endl;
return 0;
}
record Student(string Name, int Age);
Student student = new Student("Lan", 18);
Console.WriteLine(student.Name);
const student = { name: "Lan", age: 18 };
console.log(student.name);
interface Student {
name: string;
age: number;
}
const student: Student = { name: "Lan", age: 18 };
console.log(student.name);
package main
import "fmt"
type Student struct {
Name string
Age int
}
func main() {
student := Student{Name: "Lan", Age: 18}
fmt.Println(student.Name)
}
struct Student {
name: String,
age: u32,
}
fn main() {
let student = Student {
name: String::from("Lan"),
age: 18,
};
println!("{}", student.name);
}
Ghi chú theo ngôn ngữ
Python không có struct như C trong lõi ngôn ngữ, nhưng dataclass, namedtuple hoặc class thường được dùng để mô tả dữ liệu có cấu trúc.
record trong Pascal là cách tự nhiên để gom nhiều trường khác kiểu. Đây là cấu trúc dữ liệu rất phổ biến trong các bài toán nhập môn.
struct trong C chỉ mô tả dữ liệu; hành vi thường được tách sang các hàm bên ngoài thay vì gắn trực tiếp như trong mô hình đối tượng.
C++ cho phép struct có cả dữ liệu lẫn phương thức. Khác với class, các thành phần của struct mặc định là public.
C# có cả struct và record. record là kiểu tạo nhanh có cân bằng tự động, phù hợp cho dữ liệu bất biến.
JavaScript dùng object literal cho dữ liệu có cấu trúc. Không có struct riêng; kiểm tra cấu trúc thường qua thư viện bên ngoài hoặc TypeScript.
TypeScript dùng interface hoặc type để định nghĩa cấu trúc dữ liệu. Không có struct; mọi kiểm tra cấu trúc là tại biên dịch, không tại runtime.
Go dùng struct rất phổ biến và là nền tảng của lập trình hướng đối tượng theo phong cách Go. Phương thức gắn vào struct qua receiver.
Rust có struct cho dữ liệu; phương thức gắn qua khối impl. struct kết hợp với impl và trait là nền tảng của hệ thống kiểu Rust.
Kết luận
struct là bước tiến tự nhiên từ biến đơn lẻ sang dữ liệu tổng hợp. Hiểu struct giúp nền tảng vững chắc khi học Lập trình hướng đối tượng — nơi struct phát triển thành lớp với phương thức và đóng gói.
Bình luận