Menu
Coddy logo textTech

Recapitulação — Calculadora Simples

Parte da seção Programação Orientada a Objetos do Journey de GO da Coddy. Lição 11 de 107.

challenge icon

Desafio

Difícil

Construa uma Calculator completa usando tudo o que você aprendeu:

  • Struct (Campos Exportados): Defina Calculator com Name (string), LastResult (float64) e History (int)
  • Função Construtora: NewCalculator(name string) retorna *Calculator. Se name estiver vazio, use "Unnamed" como padrão
  • Receptor por Valor: GetInfo() retorna o nome da calculadora como uma string formatada
  • Receptores por Ponteiro: Add, Subtract e Multiply armazenam cada resultado em LastResult e incrementam History
  • Divide: receptor por ponteiro que retorna (float64, string). Se houver divisão por zero, retorne 0 e "Error: division by zero" sem atualizar History ou LastResult

Experimente você mesmo

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 as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de Go online