用Golang开发在线计算器需前后端协作:前端HTML页面通过fetch发送表达式,后端Go程序用net/http处理POST请求,借助govaluate解析计算并返回JSON结果,主函数注册/calculate路由和静态文件服务,项目结构清晰,可快速搭建运行。

用Golang开发一个在线计算器项目并不复杂,关键在于合理组织前后端逻辑。核心思路是:前端提供用户界面输入表达式,后端使用Go处理HTTP请求并计算结果,再返回给前端展示。整个项目可以基于标准库快速搭建,无需引入复杂框架。
一个清晰的目录结构有助于后续维护:
calculator/初始化模块:
go mod init calculator
在 static/index.html 中创建简单界面:
立即学习“go语言免费学习笔记(深入)”;
包含一个输入框、按钮和结果显示区域。通过 fetch 发送表达式到后端 /calculate 接口。
<form onsubmit="calculate(); return false;">在 handler/calc.go 中定义结构体和处理函数:
接收JSON格式的表达式,调用计算函数,返回结果或错误信息。
type CalcRequest struct {type CalcResponse struct {
Result string json:"result"
}
func CalculateHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
http.Error(w, "仅支持 POST 请求", http.StatusMethodNotAllowed)
return
}
var req CalcRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
http.Error(w, "请求格式错误", http.StatusBadRequest)
return
}
result, err := Evaluate(req.Expression)
if err != nil {
result = "错误: " + err.Error()
}
response := CalcResponse{Result: result}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
Go标准库没有内置表达式解析器,但可以用第三方库如 gorilla/mux 或自己实现简易解析。
推荐使用 shunting-yard 算法或现成库如 antonmedv/expr,但最简单方式是直接调用系统工具(仅限学习)。
更安全的做法是写一个简单的递归下降解析器,或使用 evanphx/json-patch/v5 的子包,但为简化,可用如下方法:
import "github.com/Knetic/govaluate"func Evaluate(expr string) (string, error) {
expression, err := govaluate.NewEvaluableExpression(expr)
if err != nil {
return "", err
}
result, err := expression.Evaluate(nil)
if err != nil {
return "", err
}
return fmt.Sprintf("%v", result), nil
}
记得添加依赖:
go get github.com/Knetic/govaluate
在 main.go 中注册路由和静态文件服务:
package mainimport (
"net/http"
"calculator/handler"
)
func main() {
http.HandleFunc("/calculate", handler.CalculateHandler)
http.Handle("/", http.FileServer(http.Dir("static/")))
println("服务器运行在 :8080")
http.ListenAndServe(":8080", nil)
}
运行项目:
go run main.go,然后访问 http://localhost:8080
基本上就这些。功能可逐步扩展,比如增加历史记录、支持函数(sin、sqrt)、语法高亮等。关键是先跑通基础流程。
以上就是Golang如何开发在线计算器项目的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号