用Go标准库实现简易投票网站:前端HTML表单以POST提交单选选项,后端用sync.Map内存计数并重定向,/路径动态渲染统计结果与表单,支持实时查看票数变化。
用 Go 开发一个简易投票网站,核心在于:前端表单提交选项,后端接收并持久化计数,再实时展示统计结果。不需要复杂框架,标准库 net/http 和少量 HTML 即可实现。
写一个静态 HTML 页面(如 index.html),包含投票选项和提交按钮。关键点是使用 POST 方法提交,每个选项用 name="choice" 的单选按钮(radio):
注意:action="/vote" 指向后端处理路径;所有选项共享同一个 name,确保单选互斥。
Go 后端用 http.HandleFunc 处理两个路由:/ 返回页面,/vote 接收表单数据。用 sync.Map 安全地在内存中累计票数(适合演示,生产环境应换数据库):
var votes = sync.Map{} 存储各选项的票数(key=string, value=int64)/vote 处理器中
调用 r.ParseForm(),再用 r.FormValue("choice") 获取选中的值votes.LoadOrStore(choice, int64(0)) 初始化,再用 atomic.AddInt64 增加票数(需先断言为 *int64 或改用封装结构)/,避免重复提交在 / 的处理器中,遍历 votes 读取所有选项及票数,拼接 HTML 字符串返回(或用 html/template 更清晰):
[]string{"go", "rust", "python"}),避免漏显votes.Load(option) 获取当前票数,转成整数Go: 12 票
启动服务:go run main.go,浏览器访问 http://localhost:8080 即可投票。刷新页面查看统计变化。若需持久化,后续可替换 sync.Map 为 JSON 文件读写,或接入 SQLite。