Menu
Coddy logo textTech

Resumen - Calculadora simple

Parte de la sección Programación Orientada a Objetos del Journey de GO de Coddy. Lección 11 de 107.

challenge icon

Desafío

Difícil

Construye una Calculator completa usando todo lo que has aprendido:

  • Estructura (campos exportados): Define Calculator con Name (string), LastResult (float64) y History (int)
  • Función constructora: NewCalculator(name string) devuelve *Calculator. Si name está vacío, usa "Unnamed" como valor predeterminado
  • Receptor por valor: GetInfo() devuelve el nombre de la calculadora como una cadena formateada
  • Receptores por puntero: Add, Subtract y Multiply almacenan el resultado en LastResult e incrementan History
  • Divide: receptor por puntero que devuelve (float64, string). Si se divide entre cero, devuelve 0 y "Error: division by zero" sin actualizar History ni LastResult

Pruébalo tú mismo

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

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Go online