Menu
Coddy logo textTech

Итоги — Простой калькулятор

Часть раздела Объектно-ориентированное программирование путешествия по GO на Coddy — урок 11 из 107.

challenge icon

Задание

Сложно

Создайте полноценный Calculator, используя всё, что вы узнали:

  • Структура (экспортируемые поля) — определите Calculator с полями Name (string), LastResult (float64) и History (int)
  • Функция-конструкторNewCalculator(name string) возвращает *Calculator. Если имя пустое, используйте по умолчанию "Unnamed"
  • Получатель значения (Value Receiver)GetInfo() возвращает имя калькулятора в виде отформатированной строки
  • Получатели-указатели (Pointer Receivers)Add, Subtract, Multiply сохраняют результат в LastResult и увеличивают History
  • Divide — получатель-указатель, возвращающий (float64, string). При делении на ноль возвращайте 0 и "Error: division by zero" без обновления History или LastResult

Попробуйте сами

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

Все уроки раздела Объектно-ориентированное программирование