Menu
Coddy logo textTech

Rückblick – Einfacher Taschenrechner

Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy. Lektion 11 von 107.

challenge icon

Aufgabe

Schwer

Erstelle einen vollständigen Calculator und wende alles an, was du gelernt hast:

  • Struktur (exportierte Felder): Definiere Calculator mit Name (string), LastResult (float64) und History (int)
  • Konstruktorfunktion: NewCalculator(name string) gibt *Calculator zurück. Wenn name leer ist, verwende standardmäßig "Unnamed"
  • Wertempfänger: GetInfo() gibt den Namen des Rechners als formatierten String zurück
  • Zeigerempfänger: Add, Subtract und Multiply speichern jeweils das Ergebnis in LastResult und erhöhen History
  • Divide: Zeigerempfänger, der (float64, string) zurückgibt. Bei einer Division durch null gib 0 und "Error: division by zero" zurück, ohne History oder LastResult zu aktualisieren

Probier es selbst

package main

import "fmt"

func main() {
    var name string
    var a, b float64
    fmt.Scan(&name, &a, &b)

    calc := NewCalculator(name)

    fmt.Println(calc.GetInfo())
    fmt.Printf("History: %d\n", calc.History)

    fmt.Printf("%.0f + %.0f = %.2f\n", a, b, calc.Add(a, b))
    fmt.Printf("%.0f - %.0f = %.2f\n", a, b, calc.Subtract(a, b))
    fmt.Printf("%.0f * %.0f = %.2f\n", a, b, calc.Multiply(a, b))

    result, err := calc.Divide(a, b)
    if err != "" {
        fmt.Println(err)
    } else {
        fmt.Printf("%.0f / %.0f = %.2f\n", a, b, result)
    }

    fmt.Printf("History: %d\n", calc.History)
    fmt.Printf("Last Result: %.2f\n", calc.LastResult)
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Go-Compiler