Menu
CoddyTech

Ôn tập: máy tính đơn giản

Thuộc phần Lập trình hướng đối tượng trong hành trình GO của Coddy. Bài học 11 trên 107.

challenge icon

Thử thách

Khó

Xây dựng một Calculator hoàn chỉnh bằng cách áp dụng mọi điều bạn đã học:

  • Struct (các trường được export): Định nghĩa Calculator với Name (string), LastResult (float64) và History (int)
  • Hàm khởi tạo: NewCalculator(name string) trả về *Calculator. Nếu name rỗng, dùng "Unnamed" làm giá trị mặc định
  • Value receiver: GetInfo() trả về tên của máy tính dưới dạng chuỗi đã định dạng
  • Pointer receiver: Add, Subtract và Multiply đều lưu kết quả vào LastResult và tăng History
  • Divide: dùng pointer receiver, trả về (float64, string). Nếu chia cho 0, trả về 0 và "Error: division by zero" mà không cập nhật History hoặc LastResult

Tự làm thử

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

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Go online