Menu
Coddy logo textTech

Riepilogo - Calcolatrice semplice

Fa parte della sezione Programmazione orientata agli oggetti del percorso GO di Coddy. Lezione 11 di 107.

challenge icon

Sfida

Difficile

Crea una Calculator completa usando tutto ciò che hai imparato:

  • Struct (campi esportati): definisci Calculator con Name (string), LastResult (float64) e History (int)
  • Funzione costruttrice: NewCalculator(name string) restituisce *Calculator. Se name è vuoto, usa "Unnamed" come valore predefinito
  • Ricevitore per valore: GetInfo() restituisce il nome della calcolatrice come stringa formattata
  • Ricevitori puntatore: Add, Subtract, Multiply memorizzano ciascuno il risultato in LastResult e incrementano History
  • Divide: ricevitore puntatore che restituisce (float64, string). Se si divide per zero, restituisce 0 e "Error: division by zero" senza aggiornare History o LastResult

Provalo tu

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

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Go online