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

在 Go 语言中构建一个简单计算器,核心是解析用户输入的表达式并安全执行四则运算。不需要复杂框架,用标准库就能完成,重点在于输入处理、运算优先级和错误防护。
基础命令行交互:读取并拆分表达式
使用 fmt.Scanln 或 bufio.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.TrimSpace 和 strings.ToLower 预处理










