Menu
Coddy logo textTech

복습 - 간단한 계산기

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

challenge icon

챌린지

어려움

배운 모든 내용을 사용하여 완전한 Calculator를 구현하세요:

  • 구조체 (Exported 필드): CalculatorName (string), LastResult (float64), History (int)와 함께 Define하세요.
  • 생성자 함수: NewCalculator(name string)*Calculator를 반환합니다. name이 비어 있으면 "Unnamed"을 default로 사용합니다.
  • 값 receiver: GetInfo()는 계산기의 이름을 형식이 지정된 문자열로 반환합니다.
  • 포인터 receiver: Add, Subtract, Multiply는 각각 result를 LastResult에 저장하고 History를 증가시킵니다.
  • Divide: (float64, string)을 반환하는 포인터 receiver입니다. 0으로 나누는 경우 0"Error: division by zero"를 반환하며, HistoryLastResult는 업데이트하지 않습니다.

직접 해보기

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

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

직접 연습해 보세요: 온라인 Go 컴파일러