Menu
Coddy logo textTech

Podsumowanie – prosty kalkulator

Część sekcji Programowanie obiektowe ścieżki GO w Coddy. Lekcja 11 z 107.

challenge icon

Wyzwanie

Trudny

Zbuduj kompletny Calculator, wykorzystując wszystko, czego się nauczyłeś:

  • Struktura (eksportowane pola): Zdefiniuj Calculator z polami Name (string), LastResult (float64) i History (int)
  • Funkcja konstruktora: NewCalculator(name string) zwraca *Calculator. Jeśli nazwa jest pusta, użyj domyślnie "Unnamed"
  • Odbiornik wartości: GetInfo() zwraca nazwę kalkulatora jako sformatowany ciąg znaków
  • Odbiorniki wskaźnikowe: Add, Subtract, Multiply — każda z tych metod zapisuje wynik w LastResult i zwiększa History
  • Divide: odbiornik wskaźnikowy zwracający (float64, string). Jeśli dzielisz przez zero, zwróć 0 i "Error: division by zero", nie aktualizując History ani LastResult

Spróbuj swoich sił

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)
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Go online