当前位置: 首页 > news >正文

【Go每日一练】实现简单的控制台计算器

👻创作者:丶重明
👻创作时间:2025年3月7日
👻擅长领域:运维

目录

  • 1.😶‍🌫️题目:简单的控制台计算器
  • 2.😶‍🌫️代码输出
  • 3.😶‍🌫️结果输出:
  • 4.😶‍🌫️代码解析:
  • 5.😶‍🌫️本章要点:
  • 6.😶‍🌫️内容扩展:

1.😶‍🌫️题目:简单的控制台计算器

使用Go语言实现一个简单的加、减、乘、除控制台计算器,支持基本的数学运算。

通过这个练习可以学习Go语言的一些基本语法,如switch逻辑判断,if逻辑判断等使用。

设计思路比较简单,主要分为以下几个步骤:

  • 提示用户输入两个数字
  • 提示用户输入运算符
  • 根据用户输入进行相应运算
  • 得出结果

2.😶‍🌫️代码输出

接下来,将使用Go语言进行编写代码,实现简单的计算器功能。

package main

import "fmt"

func main() {
	var num1, num2 float64
	var operator string

	fmt.Println("请输入第一个数字:")
	fmt.Scanln(&num1)
	fmt.Println("请输入第二个数字:")
	fmt.Scanln(&num2)
	fmt.Println("请输入运算符(+ - * /):")
	fmt.Scanln(&operator)

	switch operator {
	case "+":
		fmt.Printf("结果为: %.2f\n", num1+num2)
	case "-":
		fmt.Printf("结果为: %.2f\n", num1-num2)
	case "*":
		fmt.Printf("结果为: %.2f\n", num1*num2)
	case "/":
		if num2 == 0 {
			fmt.Println("出错了~除数不能为0")
		} else {
			fmt.Printf("结果为: %.2f\n", num1/num2)
		}
	default:
		fmt.Println("出错了~请输入正确的运算符")
	}
}

3.😶‍🌫️结果输出:

保存代码,通过go run命令执行代码文件,如下所示:

> go run .\7.gotest.go
请输入第一个数字:
5.8
请输入第二个数字:
6.2
请输入运算符(+ - * /):
/
结果为: 0.94

4.😶‍🌫️代码解析:

  1. 导入fmt包进行输入输出操作。
  2. 使用var声明变量num1num2用于存储数字;声明变量operator用来存储操作符。
  3. 使用fmt.Scanln从控制台读取用户输入的数字和操作符。
  4. 使用switch语句根据用户输入的操作符执行相应的运算,如果输入的运算符不符合要求则提示错误。
  5. 在进行除法运算时,加入判断逻辑除数不能为0,如果为0则提示错误。

5.😶‍🌫️本章要点:

fmt.Scanln

作用是从标准输入读取一行数据,并尝试将其解析为合适的类型,与Scan的区别是遇到换行符时会停止读取。

switch 表达式 {
case1:
    // 当表达式的值等于值1时执行的代码
case2:
    // 当表达式的值等于值2时执行的代码
// 可以有更多的 case 分支
default:
    // 当表达式的值与所有 case 的值都不匹配时执行的代码
}

在表达式switch中,switch后面的表达式会被求值,然后依次与每个case后面的值进行比较。

如果匹配成功,则执行该 case 后面的代码块,并且在执行完后会自动跳出switch语句,不需要使用break语句(Go 语言的 switch 语句默认自带 break 效果)。

如果所有case都不匹配,则执行default分支(default 分支是可选的)。

if 条件表达式 {
    // 当条件表达式为 true 时执行的代码块
} else {
    // 当条件表达式为 false 时执行的代码块
}

if语句可以和else语句结合使用,当if条件表达式的值为false时,会执行else语句后面的代码块。

6.😶‍🌫️内容扩展:

这个简单计算器案例有很多扩展的地方,以下是一些可以考虑的扩展方向:

  • 支持更多运算 ,如幂运算(^)、平方根(sqrt)
  • 实现括号运算,有括号时候先算括号里的
  • 支持科学运算,比如三角函数、指数等

同系列:

上一篇:【Go每日一练】构建一个简单的用户信息管理系统

相关文章:

  • LVS + Keepalived 高可用集群
  • 《MySQL数据库从零搭建到高效管理|库的基本操作》
  • Android调试工具之ADB
  • QtDataVisualization使用
  • 100.Vue3 + OpenLayers:使用 marker-feature 添加 Marker
  • linux基本操作系统2
  • How to install a package in offline scenario in Ubuntu 24.04
  • bean的加载过程
  • WPF从初学者到专家:实战项目经验分享与总结
  • Gymnasium Taxi‐v3 环境 与 Q-learning 算法 —— 强化学习入门 I
  • 2min搞定~Mac Pro 编译安装 Nginx 1.8.1
  • IP地址到地理地址查询的实现逻辑
  • 【Go】字符串相关知识点
  • ranger集成starrock报错
  • CTFshow 【WEB入门】信息搜集 【VIP限免】 web1-web17
  • 【第四节】windows sdk编程:windows 中的窗口
  • 隐藏的git文件夹
  • 【解决报错】:detected dubious ownership in repository at ‘D:/idea_code/xxx‘问题
  • 每日一题——两两交换链表中的节点
  • koltin在android 开发
  • 男子聚餐饮酒后身亡,同桌3人被判赔偿近20万元
  • 15年全免费,内蒙古准格尔旗实现幼儿园到高中0学费
  • 浙江理工大学传播系原系主任刘曦逝世,年仅44岁
  • 男子恶意遗弃幼子获刑,最高法发布涉未成年人家庭保护典型案例
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会
  • 安徽省委常委、合肥市委书记费高云卸任副省长职务