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
  • 增加一个 退出程序 的选项,形成菜单式交互
相关推荐
H_老邪29 分钟前
spring boot 学习之路-1.0
spring boot·后端·学习
树獭叔叔39 分钟前
Claude Code Skill 系统:懒加载的 Agent 行动说明
后端·aigc·openai
Nexzk44 分钟前
我把 Hermes Agent 源码扒了个底朝天:它不是“又一个 AI Agent”,而是在认真造一套代理操作系统
后端
袋鱼不重1 小时前
Hermes Agent 安装与实战:从安装到与 OpenClaw 全方位对比
前端·后端·ai编程
写Cpp的小黑黑1 小时前
C++ std::shared_ptr 线程安全性和最佳实践详解
后端
沸点小助手1 小时前
「 AI 整活大赛,正式开擂 & 最近一次面试被问麻了吗」沸点获奖名单公示|本周互动话题上新🎊
前端·人工智能·后端
何陋轩1 小时前
消息队列Kafka与RabbitMQ深度解析:把分布式消息核心讲透,吊打面试官
redis·后端
青Cheng序员石头1 小时前
龙虾运行时安全部署 | NVIDIA NemoClaw 深度研究报告
后端·aigc·nvidia
Oneslide1 小时前
解决 df -h 与 lsblk 显示不一致问题(XFS 文件系统实操记录)
后端
_Evan_Yao1 小时前
别让“规范”困住你:前后端交互中的方法选择与认知突围
java·后端·交互·restful