Menu
Coddy logo textTech

Zusammenfassung – Struct-Verhalten

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 11 von 68.

challenge icon

Aufgabe

Einfach

In dieser Herausforderung üben Sie die Implementierung von sowohl Value- als auch Pointer-Receivern, indem Sie ein einfaches Rechteck-Verwaltungssystem erstellen. Sie erstellen eine Rectangle-Struktur und definieren zwei verschiedene Arten von Methoden, die demonstrieren, wann welcher Receiver-Typ verwendet werden sollte.

Sie erhalten drei Eingaben:

  • Ein String, der die Breite des Rechtecks darstellt (z. B. "5.0")
  • Ein String, der die Höhe des Rechtecks darstellt (z. B. "3.0")
  • Ein String, der einen Skalierungsfaktor darstellt (z. B. "2.0")

Ihre Aufgabe ist es:

  1. Definieren Sie eine Rectangle-Struktur mit zwei Feldern: Width (float64) und Height (float64)
  2. Erstellen Sie eine Methode namens area mit einem Value-Receiver, die die Fläche des Rechtecks berechnet und zurückgibt (Breite × Höhe)
  3. Erstellen Sie eine Methode namens scale mit einem Pointer-Receiver, die sowohl die Breite als auch die Höhe mit dem angegebenen Skalierungsfaktor multipliziert
  4. Parsen Sie die Eingaben, um eine Rectangle-Instanz zu erstellen
  5. Geben Sie die anfängliche Fläche im Format "Initial area: [area]" aus
  6. Rufen Sie die Methode scale mit dem Skalierungsfaktor auf
  7. Geben Sie die skalierte Fläche im Format "Scaled area: [area]" aus

Die Flächenwerte sollten als ganze Zahlen angezeigt werden, wenn sie Ganzzahlen sind (z. B. 15 anstelle von 15.0), aber bei Bedarf mit Dezimalstellen (z. B. 15.5). Diese Herausforderung demonstriert das wichtigste Prinzip: Verwenden Sie Value-Receiver für Methoden, die Daten nur lesen (wie die Flächenberechnung), und Pointer-Receiver für Methoden, die die ursprüngliche Struktur ändern (wie das Skalieren von Dimensionen).

Probier es selbst

package main

import (
	"fmt"
	"strconv"
)

// TODO: Definiere hier dein Rectangle-Struct

// TODO: Implementiere hier die area-Methode mit Value-Receiver

// TODO: Implementiere hier die scale-Methode mit Pointer-Receiver

func main() {
	// Eingabe lesen
	var widthStr string
	var heightStr string
	var scaleStr string
	fmt.Scanln(&widthStr)
	fmt.Scanln(&heightStr)
	fmt.Scanln(&scaleStr)
	
	// Eingaben in float64 umwandeln
	width, _ := strconv.ParseFloat(widthStr, 64)
	height, _ := strconv.ParseFloat(heightStr, 64)
	scaleFactor, _ := strconv.ParseFloat(scaleStr, 64)
	
	// TODO: Rectangle-Instanz erstellen und die Lösung unten implementieren
	
	// Anfängliche Fläche ausgeben
	// fmt.Printf("Initial area: %.0f\n", initialArea) // Dieses Format für die Ausgabe verwenden
	
	// Rechteck skalieren
	
	// Skalierte Fläche ausgeben
	// fmt.Printf("Scaled area: %.0f\n", scaledArea) // Dieses Format für die Ausgabe verwenden
}

Alle Lektionen in Logik & Ablauf