回顾:简易计算器
本课属于 Coddy GO 学习旅程的“面向对象编程”单元。第 11 课,共 107 课。
挑战
困难综合运用你学到的所有内容,构建一个完整的 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 在线编译器