首页 > 后端开发 > Golang > 正文

如何使用Golang开发简单投票系统_统计用户投票和结果展示

P粉602998670
发布: 2025-12-20 16:05:36
原创
728人浏览过
Go投票系统核心是用sync.RWMutex保护的map实现内存存储:Votes记录选项票数,Voted去重用户ID;提供/vote(防重提交)和/results(JSON返回统计)两个HTTP接口,支持单机轻量部署。

如何使用golang开发简单投票系统_统计用户投票和结果展示

用 Go 语言开发一个简单投票系统,核心在于:定义投票结构、处理用户提交(防重复)、安全计数、提供结果接口。不需要数据库也能跑起来,适合学习和轻量部署。

数据结构与内存存储设计

投票系统最简实现可用内存 map 模拟存储,适合单机、小流量场景:

  • map[string]int 记录每个选项的票数(如 votes["Go"] = 12
  • map[string]boolmap[string]struct{} 记录已投票用户 ID(如 IP 或 token),防止刷票
  • 定义结构体封装状态,便于后续扩展:
    type VoteSystem struct {<br>  Votes   map[string]int<br>  Voted   map[string]struct{} // 用户标识去重<br>  mu      sync.RWMutex<br>}
    登录后复制

HTTP 接口实现(投票 + 查询)

使用标准 net/http 即可,两个关键接口:

  • POST /vote:接收 JSON 投票请求,校验用户是否已投,更新计数
    示例请求:{"user_id":"u123", "option":"Rust"}
  • GET /results:返回当前各选项票数及总票数,支持 JSON 输出
    返回示例:{"Go":42,"Rust":28,"Zig":5,"total":75}

注意加锁(mu.Lock() / mu.RLock())避免并发写冲突。

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

迦恩计算机资源网源码(图书销售类)
迦恩计算机资源网源码(图书销售类)

采用三层架构开发,前台集成了产品在线展示,用户注册、在线调查、在线投稿后台有类别管理\图书管理\订单管理\会员管理\配送范围管理\邮件列表\广告管理\友情链接管理等后台添加图书时自动生成缩略图和文字水印主要参考了petshop的设计架构、使用了Asp.net2.0中很多MemberShip、master等新功能后台管理地址/web/admin/ 超级管理员账号密码均为aspx1特别提示:该系统需要

迦恩计算机资源网源码(图书销售类) 0
查看详情 迦恩计算机资源网源码(图书销售类)

防重复投票的关键逻辑

仅靠前端限制不可靠,服务端必须校验:

  • 提取唯一用户标识:可用 user_id(推荐)、session token 或哈希后的 IP(不精准但够用)
  • /vote 处理中先查 voted[user_id],存在则返回 400 Bad Request
  • 成功投票后立即写入 voted[user_id] = struct{}{}votes[option]++

运行与测试建议

启动后用 curl 快速验证流程:

  • 投一票:curl -X POST http://localhost:8080/vote -H "Content-Type: application/json" -d '{"user_id":"alice","option":"Go"}'
  • 查结果:curl http://localhost:8080/results
  • 再投同用户会失败,说明防重生效

后续可平滑升级:把 map 换成 Redis 存储、加 JWT 验证、支持多轮投票、添加管理后台等。

以上就是如何使用Golang开发简单投票系统_统计用户投票和结果展示的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号