지금까지 우리는 숫자나 글자 같은 개별 데이터를 다루는 법을 배웠어요. 하지만 우리가 실제 세상을 프로그래밍할 때는 조금 더 복잡한 정보가 필요하답니다. 이때 구원 투수처럼 등장하는 것이 바로 **'구조체(Struct)'**예요!
비유를 들어볼까요? 여러분이 동아리 회원 명부를 만든다고 상상해 보세요. 한 사람의 정보를 적으려면 이름, 나이, 가입일 등 여러 가지 정보가 필요하죠?
- **이름:** "홍길동" (문자열)
- **나이:** 20 (숫자)
- **활동 중 여부:** true (참/거짓)
이 정보들을 제각각 따로 들고 다니면 관리하기가 너무 힘들 거예요. 이때 **구조체(여러 종류의 데이터를 하나로 묶어주는 바구니)**를 사용하면, 이 모든 정보를 '회원'이라는 하나의 이름표 아래 예쁘게 모아둘 수 있답니다. 마치 **'나만의 데이터 양식'**을 만드는 것과 같아요!
---
구조체를 만드는 것은 "앞으로 이런 양식의 카드를 쓸 거야!"라고 **설계도**를 그리는 과정이에요. 전문 용어로는 **정의(데이터의 틀을 미리 정하는 것)**라고 부릅니다.
struct Member { // 'Member'라는 이름의 구조체(설계도)를 시작해요.
name: String, // 'name'이라는 항목(필드)은 문자열로 정해요.
age: u32, // 'age'라는 항목(필드)은 숫자로 정해요.
is_active: bool, // 'is_active'라는 항목(필드)은 참/거짓으로 정해요.
}
---
설계도를 그렸다면, 이제 실제 데이터를 채워 넣은 카드를 만들어봐야겠죠? 이것을 전문 용어로 **인스턴스(설계도를 바탕으로 실제로 만든 구체적인 객체)**라고 해요.
fn main() {
// 'Member' 설계도를 사용해서 'user1'이라는 실제 정보를 만들어요.
let user1 = Member {
name: String::from("철수"), // 이름을 "철수"라고 적어줘요.
age: 25, // 나이를 25라고 적어줘요.
is_active: true, // 활동 중이라고 표시해요.
};
// 점(.)을 찍어서 원하는 정보만 쏙쏙 골라 쓸 수 있어요!
println!("이름: {}", user1.name); // user1의 이름만 가져와서 출력해요.
}
---
1. **구조체(Struct):** 서로 관련된 여러 데이터를 하나로 묶어주는 **'데이터 바구니'** 혹은 **'설계도'**입니다.
2. **필드(Field):** 구조체 바구니 안에 들어있는 **각각의 정보 항목**들을 말해요.
3. **인스턴스(Instance):** 설계도를 보고 **실제로 내용을 채워 넣어 만든 결과물**이에요.
처음에는 구조체라는 단어가 낯설게 느껴질 수 있어요. 하지만 "관련 있는 데이터들을 흩어지지 않게 한 봉투에 담는다!"라고 생각하면 아주 쉬워요. Rust에서 가장 많이 쓰이는 도구 중 하나이니, 천천히 친해져 봐요.
| 53. 필드 초기화 축약법 (0) | 2026.10.01 |
|---|---|
| 52. 구조체 정의와 인스턴스 생성 (0) | 2026.10.01 |
| 50. 따라하며 배우기: 단어 개수 세기 (0) | 2026.09.28 |
| 49. 소유권 개념 총정리 퀴즈 (0) | 2026.09.28 |
| 48. 문자열 슬라이스 활용 (0) | 2026.09.28 |