如何在Golang中构建简单计算器应用_实现加减乘除功能

15次阅读

go语言简易计算器核心是解析表达式并安全执行四则运算:用正则提取数字与操作符,strconv.ParseFloat转数值,switch处理运算,除零和非法输入均报错,支持小数、循环交互及空格/大小写预处理。

如何在Golang中构建简单计算器应用_实现加减乘除功能

在 Go 语言中构建一个简单计算器,核心是解析用户输入的表达式并安全执行四则运算。不需要复杂框架,用标准库就能完成,重点在于输入处理、运算优先级和错误防护。

基础命令行交互:读取并拆分表达式

使用 fmt.Scanlnbufio.Scanner 获取一行输入,例如 “5 + 3”“10 * 2 – 4”。建议按空格分割(适合初学),但要注意多位数和负数场景。更稳妥的做法是用正则提取数字与操作符:

  • regexp.MustCompile(`(-?d+.?d*)s*([+-*/])s*(-?d+.?d*)`) 匹配两个操作数加一个运算符
  • 若需支持连续运算(如 3 + 5 * 2),需实现简易表达式解析器或调用第三方库如 robfig/eval(仅用于学习,生产环境慎用)

安全数值转换与运算逻辑

strconv.ParseFloat 转换字符串为 float64,捕获错误避免 panic:

  • 检查 err != nil,提示“请输入有效数字”
  • 除法时判断除数是否为 0,返回错误信息而非崩溃
  • switch 判断操作符,分别执行 +*/,结果转为字符串输出

封装成可复用函数

把核心逻辑抽成函数,便于测试和扩展:

立即学习go语言免费学习笔记(深入)”;

func Calculate(a, b float64, op string) (float64, error) {     switch op {     case "+": return a + b, nil     case "-": return a - b, nil     case "*": return a * b, nil     case "/":         if b == 0 {             return 0, errors.New("division by zero")         }         return a / b, nil     default:         return 0, fmt.Errorf("unsupported operator: %s", op)     } }

主函数中调用该函数,并统一处理错误输出。

增强体验的小技巧

  • 支持小数:用 float64 而非 int,输入 “3.14 * 2” 也能算
  • 循环运行:用 for 循环包裹输入逻辑,输入 “quit” 退出
  • 忽略大小写与空格:用 strings.TrimSpacestrings.ToLower 预处理

text=ZqhQzanResources