Go语言实战案例-简易计算器(加减乘除)

📚 案例目标

实现一个控制台版简易计算器程序,能够读取用户输入的两个数字和一个运算符,并输出相应的计算结果,帮助初学者练习基本的输入、条件判断与运算操作。


🛠 案例说明

用户输入两个数字和一个运算符(+-*/),程序根据输入进行计算并输出结果。例如:

ini 复制代码
请输入第一个数字:12
请输入运算符(+ - * /):*
请输入第二个数字:3
结果是:12 * 3 = 36

🔑 涉及知识点

  • fmt.Scanln() 用于读取多个输入
  • if-elseswitch 控制结构
  • 运算符处理与浮点数输出格式控制
  • 类型为 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
  • 增加一个 退出程序 的选项,形成菜单式交互
相关推荐
IT_陈寒11 小时前
SpringBoot 3.x实战:5个高效开发技巧让我减少了40%重复代码
前端·人工智能·后端
悟空码字12 小时前
三步搞定短信验证码!SpringBoot集成阿里云短信实战
java·spring boot·后端
嘉然今天吃粑粑柑12 小时前
Kafka vs RabbitMQ:从消费模型到使用场景的一次讲清
后端
肥肥今天也好看12 小时前
Java 日期格式化陷阱:YYYY vs yyyy 导致的生产事故分析
后端
用户9483570165112 小时前
可观测性落地:如何在 Java 项目中统一埋点 Trace ID?(一)
后端
天天摸鱼的java工程师12 小时前
volatile 关键字底层原理:为什么它不能保证原子性?
java·后端
leikooo12 小时前
SpringAI 多轮对话报错 400 Bad Request
后端·ai编程
小杨同学4912 小时前
C 语言实战:堆内存存储字符串 + 多种递归方案计算字符串长度
数据库·后端·算法
golang学习记12 小时前
Go 中防止敏感数据意外泄露的几种姿势
后端
czlczl2002092512 小时前
Spring Boot 构建 SaaS 多租户架构
spring boot·后端·架构