如何在Golang中开发简易投票网站_前端提交数据后台统计

7次阅读

用 Go 标准库实现简易投票网站:前端 HTML 表单以 POST 提交单选选项,后端用 sync.Map 内存计数并重定向,/ 路径动态渲染统计结果与表单,支持实时查看票数变化。

如何在 Golang 中开发简易投票网站_前端提交数据后台统计

用 Go 开发一个简易投票网站,核心在于:前端 表单提交选项,后端 接收并持久化计数,再实时展示统计结果。不需要复杂框架,标准库 net/http 和少量 HTML 即可实现。

前端:简洁表单 + 选项提交

写一个静态 HTML 页面(如 index.html),包含投票选项和提交按钮。关键点是使用 POST 方法提交,每个选项用 name="choice" 的单选按钮(radio):




注意:action="/vote" 指向后端处理路径;所有选项共享同一个 name,确保单选互斥。

后台:接收、计数、存储(内存版)

Go 后端用 http.HandleFunc 处理两个 路由/ 返回页面,/vote 接收表单数据。用 sync.Map 安全地在内存中累计票数(适合演示,生产环境应换数据库):

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

  • 定义全局 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) 获取当前票数,转成整数
  • 在 HTML 中以列表或进度条形式展示,例如:
    Go: 12
  • 把原始表单也嵌入同一页面,实现“投完即见结果”

运行与验证

启动服务:go run main.go

浏览器 访问 http://localhost:8080 即可投票。刷新页面查看统计变化。若需持久化,后续可替换 sync.Map 为 JSON 文件读写,或接入 SQLite。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-30发表,共计953字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources