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
  • 增加一个 退出程序 的选项,形成菜单式交互
相关推荐
自进化Agent智能体16 小时前
Hermes CLI 界面详解——命令行交互全攻略
后端
1点东西16 小时前
做了个AI日志平台,零代码接入,嘎嘎好用
后端·aigc·自动化运维
程序员AI工坊16 小时前
Agent 开发:ReAct 循环与工具调用实战——从单次调用到自主 Agent
人工智能·后端·python·langchain·agent·react
不爱说话郭德纲17 小时前
我只给了 TRAE Work 一张差评截图,它最后却把自己的 P0 结论推翻了?
前端·后端·架构
tech讯息17 小时前
企业做视频生成,应该选择哪些云上多模态模型平台,以平衡模型质量、可控性和推理成本?AWS 分层选型路径
后端
潇客17 小时前
前端第一次写 Node 服务:一个请求到底经历了什么?
后端
后除17 小时前
Debian 安装与使用 Certbot
后端·nginx·https
小林敲代码778818 小时前
Spring Boot 3 升级踩坑:aj-captcha 行为验证码底图加载失效
java·spring boot·后端
雪碧51318 小时前
基于afsim的训练多个智能体算法控制(持续关注和收藏后续会同步整个源码包)
后端
保加利亚的风18 小时前
Docker 学习文档(Mac + Docker Desktop 版)
前端·后端