Menu
Coddy logo textTech

구조체 필드 접근하기

Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 22번째.

구조체 인스턴스를 생성하고 나면, 그 안에 저장된 값을 가져올 방법이 필요합니다. Rust는 구조체 내의 개별 필드에 접근하기 위해 점 표기법(dot notation)을 사용합니다.

구문은 간단합니다. 구조체 인스턴스 이름을 쓰고 마침표(.)를 찍은 다음, 액세스하려는 필드 이름을 쓰면 됩니다:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

이 점 표기법은 다른 프로그래밍 언어에서 프로퍼티에 접근하는 것과 마찬가지로 작동합니다. 액세스한 값을 표현식에서 사용하거나, 변수에 할당하거나, 함수에 전달할 수 있습니다. 이 값들은 해당 타입의 다른 모든 값과 똑같이 동작합니다.

challenge icon

챌린지

쉬움

세 개의 입력을 받게 됩니다: 자동차 모델 이름, 자동차 연식(정수), 그리고 주행 거리(정수). model (String 타입), year (i32 타입), mileage (i32 타입) 세 개의 필드를 가진 Car 구조체를 정의하세요. 입력값을 사용하여 이 구조체의 인스턴스를 생성한 다음, 각 필드에 접근하여 출력하세요.

요구 사항:

  • model: String, year: i32, mileage: i32 필드를 가진 Car 구조체를 정의합니다.
  • 첫 번째 입력을 자동차 모델로 읽습니다.
  • 두 번째 입력을 읽고 연식을 위해 i32로 변환합니다.
  • 세 번째 입력을 읽고 주행 거리를 위해 i32로 변환합니다.
  • 이 값들로 Car 구조체의 인스턴스를 생성합니다.
  • 점 표기법을 사용하여 각 필드에 접근하고, 아래에 표시된 정확한 형식으로 자동차 정보를 출력합니다.

입력:

  • 첫 번째 줄: 자동차 모델 (예: Tesla Model 3)
  • 두 번째 줄: 정수 형태의 연식 (예: 2022)
  • 세 번째 줄: 정수 형태의 주행 거리 (예: 15000)

출력:

  • 첫 번째 줄: Car: [model]
  • 두 번째 줄: Year: [year]
  • 세 번째 줄: Mileage: [mileage] km

치트 시트

구조체 인스턴스 내의 필드에 접근하려면 점 표기법(dot notation)을 사용하세요:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

구문은 다음과 같습니다: instance_name.field_name. 접근한 값은 표현식에서 사용하거나, 변수에 할당하거나, 함수에 전달할 수 있습니다.

직접 해보기

use std::io;

// TODO: 여기에 model, year, mileage 필드를 가진 Car 구조체를 정의하세요

fn main() {
    // 자동차 모델 읽기
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // 연식 읽기
    let mut year_input = String::new();
    io::stdin().read_line(&mut year_input).expect("Failed to read line");
    let year: i32 = year_input.trim().parse().expect("Invalid year");
    
    // 주행 거리 읽기
    let mut mileage_input = String::new();
    io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
    let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
    
    // TODO: 입력값을 사용하여 Car 구조체의 인스턴스를 생성하세요
    
    // TODO: 각 필드에 접근하여 요구된 형식으로 출력하세요
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨