登录
首页 >  Golang >  Go教程

Golang实现简易投票网站教程

时间:2026-01-21 16:15:48 429浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Golang开发简易投票网站教程》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

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

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

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

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

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

<form method="POST" action="/vote">
  <label>&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;go&quot;&gt; Go</label><br>
  <label>&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;rust&quot;&gt; Rust</label><br>
  <label>&lt;input type=&quot;radio&quot; name=&quot;choice&quot; value=&quot;python&quot;&gt; Python</label><br>
  <button type="submit">投票</button>
</form>

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

运行与验证

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>