Menu
Coddy logo textTech

복습 - 간단한 계산기

Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 107개 중 11번째.

challenge icon

챌린지

어려움

지금까지 배운 모든 것을 사용하여 완전한 Calculator를 만드세요:

  • 구조체 (내보낸 필드)Name (string), LastResult (float64), History (int) 필드를 가진 Calculator를 정의합니다.
  • 생성자 함수NewCalculator(name string)*Calculator를 반환합니다. 만약 name이 비어 있으면, 기본값으로 "Unnamed"를 사용합니다.
  • 값 리시버 (Value Receiver)GetInfo()는 계산기의 이름을 포맷된 문자열로 반환합니다.
  • 포인터 리시버 (Pointer Receivers)Add, Subtract, Multiply는 각각 결과를 LastResult에 저장하고 History를 증가시킵니다.
  • Divide(float64, string)을 반환하는 포인터 리시버입니다. 0으로 나누는 경우, HistoryLastResult를 업데이트하지 않고 0"Error: division by zero"를 반환합니다.

직접 해보기

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

객체 지향 프로그래밍의 모든 레슨