Menu
Coddy logo textTech

Übersicht über Structs

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

Nachdem Sie nun verstehen, was Structs sind, lernen wir, wie man sie tatsächlich erstellt und verwendet. Dies umfasst zwei Schritte: zuerst das Definieren der Struktur des Structs, dann das Erstellen von Instanzen davon.

Um ein Struct zu definieren, verwenden Sie das Schlüsselwort struct, gefolgt vom Namen des Structs und seinen Feldern in geschweiften Klammern. Jedes Feld hat einen Namen und einen Typ:

struct User {
    username: String,
    active: bool,
}

Dies erstellt einen Bauplan für ein User Struct mit zwei Feldern: username vom Typ String und active vom Typ bool.

Benennungskonvention: Struct-Namen in Rust sollten PascalCase (auch UpperCamelCase genannt) verwenden, was bedeutet, dass jedes Wort mit einem Großbuchstaben beginnt — zum Beispiel User, ProductItem oder ShoppingCart. Rust wird dich warnen, wenn du diese Konvention nicht befolgst.

Sobald du ein Struct definiert hast, kannst du Instanzen davon erstellen, indem du Werte für jedes Feld angibst:

let user1 = User {
    username: String::from("alice"),
    active: true,
};

Beachten Sie, dass Sie den Namen des Structs angeben, gefolgt von geschweiften Klammern, die jeden Feldnamen, einen Doppelpunkt und seinen Wert enthalten. Die Reihenfolge der Felder muss nicht mit der Reihenfolge der Definition übereinstimmen.

Um auf die Felder einer Struct-Instanz zuzugreifen, verwende die Punktnotation – schreibe den Instanznamen gefolgt von einem Punkt und dem Feldnamen:

println!("Username: {}", user1.username);
println!("Active: {}", user1.active);

Hier greift user1.username auf das username-Feld von user1 zu, und user1.active greift auf das active-Feld zu. Sie können diese Feldwerte überall dort verwenden, wo Sie eine reguläre Variable verwenden würden.

challenge icon

Aufgabe

Einfach

Sie erhalten drei Eingaben: einen Produktnamen, einen Preis (als Dezimalzahl) und eine Lagerbestandsmenge (als Ganzzahl). Definieren Sie eine Product-Struktur mit drei Feldern: name vom Typ String, price vom Typ f64 und stock vom Typ i32. Erstellen Sie dann eine Instanz dieser Struktur unter Verwendung der Eingabewerte und geben Sie die Produktinformationen aus.

Anforderungen:

  • Definieren Sie eine Product-Struktur mit den Feldern: name: String, price: f64 und stock: i32
  • Lesen Sie die erste Eingabe als Produktnamen ein
  • Lesen Sie die zweite Eingabe ein und konvertieren Sie diese in f64 für den Preis
  • Lesen Sie die dritte Eingabe ein und konvertieren Sie diese in i32 für die Lagerbestandsmenge
  • Erstellen Sie eine Instanz der Product-Struktur mit diesen Werten
  • Geben Sie die Produktinformationen in dem unten gezeigten exakten Format aus

Eingabe:

  • Erste Zeile: Produktname (z. B. Laptop)
  • Zweite Zeile: Preis als Dezimalzahl (z. B. 999.99)
  • Dritte Zeile: Lagerbestandsmenge als Ganzzahl (z. B. 15)

Ausgabe:

  • Erste Zeile: Product: [name]
  • Zweite Zeile: Price: $[price]
  • Dritte Zeile: Stock: [quantity]

Probier es selbst

use std::io;

// TODO: Definiere dein Product struct hier


fn main() {
    // Produktnamen lesen
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    // Preis lesen
    let mut price_input = String::new();
    io::stdin().read_line(&mut price_input).expect("Failed to read line");
    let price: f64 = price_input.trim().parse().expect("Failed to parse price");
    
    // Lagerbestand lesen
    let mut stock_input = String::new();
    io::stdin().read_line(&mut stock_input).expect("Failed to read line");
    let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
    
    // TODO: Erstelle eine Instanz des Product struct unter Verwendung der Eingabewerte
    
    
    // TODO: Gib die Produktinformationen im erforderlichen Format aus
    
}
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