Menu
CoddyTech

回顾:简易计算器

本课属于 Coddy GO 学习旅程的“面向对象编程”单元。第 11 课,共 107 课。

challenge icon

挑战

困难

综合运用你学到的所有内容,构建一个完整的 Calculator:

  • 结构体(导出字段):定义 Calculator,包含 Name(string)、LastResult(float64)和 History(int)
  • 构造函数:NewCalculator(name string) 返回 *Calculator。如果 name 为空,则默认为 "Unnamed"
  • 值接收者:GetInfo() 将计算器的名称作为格式化字符串返回
  • 指针接收者: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)
}

面向对象编程中的所有课

自己练习: Go 在线编译器