Menu
CoddyTech

복습 - 간단한 계산기

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

challenge icon

챌린지

어려움

지금까지 배운 모든 내용을 활용해 완전한 Calculator를 만드세요.

  • 구조체(공개 필드): Calculator를 정의하고 Name(string), LastResult(float64), History(int)를 포함하세요.
  • 생성자 함수: NewCalculator(name string)는 *Calculator를 반환합니다. name이 비어 있으면 기본값으로 "Unnamed"를 사용하세요.
  • 값 리시버: GetInfo()는 계산기의 이름을 형식이 지정된 문자열로 반환합니다.
  • 포인터 리시버: Add, Subtract, Multiply는 각각 결과를 LastResult에 저장하고 History를 증가시킵니다.
  • 나누기: 포인터 리시버이며 (float64, string)을 반환합니다. 0으로 나누면 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)
}

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

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