Menu
Coddy logo textTech

Zugriff auf Struct-Felder

Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 22 von 66.

Sobald Sie eine Struct-Instanz erstellt haben, benötigen Sie eine Möglichkeit, die darin gespeicherten Werte abzurufen. Rust verwendet die Punktnotation, um auf einzelne Felder innerhalb eines Structs zuzugreifen.

Die Syntax ist unkompliziert: Sie schreiben den Namen der Struct-Instanz, gefolgt von einem Punkt und dann dem Namen des Feldes, auf das Sie zugreifen möchten:

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

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

Diese Punktnotation funktioniert genau wie der Zugriff auf Eigenschaften in anderen Programmiersprachen. Sie können die abgerufenen Werte in Ausdrücken verwenden, sie Variablen zuweisen oder sie an Funktionen übergeben – sie verhalten sich genau wie jeder andere Wert dieses Typs.

challenge icon

Aufgabe

Einfach

Sie erhalten drei Eingaben: einen Automodellnamen, das Baujahr des Autos (als Ganzzahl) und seinen Kilometerstand (als Ganzzahl). Definieren Sie ein Car-Struct mit drei Feldern: model vom Typ String, year vom Typ i32 und mileage vom Typ i32. Erstellen Sie eine Instanz dieses Structs unter Verwendung der Eingabewerte, greifen Sie dann auf jedes Feld zu und geben Sie es aus.

Anforderungen:

  • Definieren Sie ein Car-Struct mit den Feldern: model: String, year: i32 und mileage: i32
  • Lesen Sie die erste Eingabe als Automodell ein
  • Lesen Sie die zweite Eingabe ein und konvertieren Sie diese in i32 für das Jahr
  • Lesen Sie die dritte Eingabe ein und konvertieren Sie diese in i32 für den Kilometerstand
  • Erstellen Sie eine Instanz des Car-Structs mit diesen Werten
  • Verwenden Sie die Punktnotation, um auf jedes Feld zuzugreifen, und geben Sie die Autoinformationen in dem unten gezeigten exakten Format aus

Eingabe:

  • Erste Zeile: Automodell (z. B. Tesla Model 3)
  • Zweite Zeile: Jahr als Ganzzahl (z. B. 2022)
  • Dritte Zeile: Kilometerstand als Ganzzahl (z. B. 15000)

Ausgabe:

  • Erste Zeile: Car: [model]
  • Zweite Zeile: Year: [year]
  • Dritte Zeile: Mileage: [mileage] km

Spickzettel

Um auf Felder innerhalb einer Struct-Instanz zuzugreifen, verwende die Punktnotation:

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

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

Die Syntax lautet: instance_name.field_name. Aufgerufene Werte können in Ausdrücken verwendet, Variablen zugewiesen oder an Funktionen übergeben werden.

Probier es selbst

use std::io;

// TODO: Definieren Sie hier die Car-Struktur mit den Feldern: model, year und mileage

fn main() {
    // Das Automodell einlesen
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // Das Jahr einlesen
    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");
    
    // Den Kilometerstand einlesen
    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: Erstellen Sie eine Instanz der Car-Struktur unter Verwendung der Eingabewerte
    
    // TODO: Greifen Sie auf jedes Feld zu und geben Sie es im erforderlichen Format aus
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow