프로그래밍 언어/Rust
[Rust] 10. 구조체(Struct)
copynull
2023. 2. 10. 13:17
구조체(structure type)
사용자가 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입입니다. 쉽게 말하면, 구조체란 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구입니다. 구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있습니다.
구조체 구조
// 구조체 생성
Struct 구조체명
{
변수명: 타입,
변수명: 타입,
....
}
// 구조체 사용
let 변수명 = 구조체명 { 타입:값, 타입:값 ... };
간단한 예제로 알아보자
// 이름과 나이를 받는 User 구조체 선언
struct User
{
name: String,
age: i32,
}
fn main()
{
// tom 인스턴스(객체) 생성
let tom = User { name: String::from("Tom"), age: 12 };
println!("name: {}, age: {}", tom.name, tom.age);
}
// 출력 결과
name: Tom, age: 12
듀플형 구조체
구조체에 필드명 없이 타입만 정의하여 사용 가능합니다. 위에서 본 구조체 선언 방식보다 간단하고 편리하다는 장점이 있습니다.
위 예제와 똑같고 구현을 듀플형으로 변경하였습니다.
// 듀플형으로 구현
struct User(String, i32);
fn main()
{
let tom = User(String::from("Tom"), 12);
println!("name: {}, age: {}", tom.0, tom.1);
}
// 출력 결과
name: Tom, age: 12
듀플형의 다른 예제들
struct Point(i32, i32);
struct Color(i32, i32, i32);
fn main()
{
let pt = Point(128, 255);
let color = Color(255, 255, 255);
println!("x: {}, y: {}", pt.0, pt.1);
println!("R: {}, G: {}, B: {}", color.0, color.1, color.2);
}
// 출력 결과
x: 128, y: 255
R: 255, G: 255, B: 255