使用Go的net/http包搭建Web服务,注册/、/vote和/results路由;2. 通过HTML表单收集用户投票,后端解析POST请求并验证输入;3. 利用map和sync.Mutex在内存中安全存储投票数据,可选JSON文件持久化;4. 展示页面汇总结果并计算百分比,实现完整在线投票流程。

用 Golang 实现一个简单的在线投票系统,核心在于处理 Web 表单、验证用户输入、存储数据以及展示结果。整个流程不复杂,但能很好地体现 Go 在 Web 开发中的简洁与高效。
搭建基础 Web 服务
Go 自带的 net/http 包足以支撑一个小型 Web 应用。我们先启动一个 HTTP 服务器,并注册几个关键路由:
/:显示投票选项和表单 /vote:接收 POST 请求,处理投票提交 /results:展示当前投票结果
代码结构如下:
func main() {
http.HandleFunc(“/”, showPoll)
http.HandleFunc(“/vote”, handleVote)
http.HandleFunc(“/results”, showResults)
http.ListenAndServe(“:8080”, nil)
}
设计 HTML 表单与处理用户输入
在 showPoll 处理函数中,返回一个包含单选按钮的 HTML 表单,让用户选择选项并提交。
立即学习“go语言免费学习笔记(深入)”;
示例表单片段:
在 handleVote 中读取表单数据:
err := r.ParseForm()
if err != nil {
// 处理解析错误
}
selected := r.FormValue(“option”)
if selected == “” {
// 返回错误提示
}
可加入简单验证,比如确保选项合法,防止恶意提交。
使用内存或文件存储投票数据
对于轻量级应用,可以用 Go 的 map 存储计数,配合 sync.Mutex 防止并发冲突:
var votes = make(map[string]int)
var mu sync.Mutex
处理投票时:
mu.Lock()
votes[selected]++
mu.Unlock()
如果需要持久化,可将数据写入 JSON 文件或 SQLite。每次启动读取文件恢复状态,投票后重新写入。
写入 JSON 示例:
data, _ := json.Marshal(votes)
os.WriteFile(“votes.json”, data, 0644)
展示投票结果
showResults 函数汇总数据并生成 HTML 页面,列出每个选项的得票数和百分比。
计算逻辑:
total := 0
for _, v := range votes { total += v }
// 计算各选项占比
前端可用简单表格或进度条形式展示,提升可读性。
基本上就这些。通过 net/http 处理请求,用标准库完成表单解析和数据存储,无需引入框架也能快速实现功能完整的投票系统。适合学习 Web 流程和 Go 基础操作。
以上就是Golang 如何实现一个在线投票系统_Golang Web 表单与数据存储项目的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1425112.html
微信扫一扫
支付宝扫一扫