📚 案例目标
实现一个控制台版简易计算器程序,能够读取用户输入的两个数字和一个运算符,并输出相应的计算结果,帮助初学者练习基本的输入、条件判断与运算操作。
🛠 案例说明
用户输入两个数字和一个运算符(+
、-
、*
、/
),程序根据输入进行计算并输出结果。例如:
ini
请输入第一个数字:12
请输入运算符(+ - * /):*
请输入第二个数字:3
结果是:12 * 3 = 36
🔑 涉及知识点
fmt.Scanln()
用于读取多个输入if-else
或switch
控制结构- 运算符处理与浮点数输出格式控制
- 类型为
float64
,适配小数运算
✅ 示例代码
go
package main
import (
"fmt"
)
func main() {
var num1, num2 float64
var operator string
fmt.Print("请输入第一个数字:")
fmt.Scanln(&num1)
fmt.Print("请输入运算符(+ - * /):")
fmt.Scanln(&operator)
fmt.Print("请输入第二个数字:")
fmt.Scanln(&num2)
var result float64
var valid = true
switch operator {
case "+":
result = num1 + num2
case "-":
result = num1 - num2
case "*":
result = num1 * num2
case "/":
if num2 != 0 {
result = num1 / num2
} else {
fmt.Println("错误:除数不能为0")
valid = false
}
default:
fmt.Println("错误:无效的运算符")
valid = false
}
if valid {
fmt.Printf("结果是:%.2f %s %.2f = %.2f\n", num1, operator, num2, result)
}
}
📎 代码解析
代码段 | 说明 |
---|---|
float64 类型 |
支持小数运算 |
fmt.Scanln() |
逐个读取用户输入 |
switch 判断 |
匹配四种运算符,结构清晰 |
错误处理 | 如果除数为0或运算符无效,给予提示并终止运算 |
Printf |
控制输出精度,两位小数 |
💡 补充说明
Scanln()
每次只能读取一个值,多个输入需多次调用或使用fmt.Scan()
。Printf
中使用%.2f
可保留两位小数,提升结果美观性。- 此程序未实现循环运行,想连续计算需后续加入
for
循环(在后续案例讲解)。
🧪 示例运行
ini
请输入第一个数字:8
请输入运算符(+ - * /):/
请输入第二个数字:2
结果是:8.00 / 2.00 = 4.00
🧩 练习扩展
- 添加用户输入非法字符时的重试机制
- 支持多个运算步骤,例如:12 + 5 * 2
- 增加一个
退出程序
的选项,形成菜单式交互