用Golang实现轻量级留言板系统:通过net/http处理路由(/展示留言、/post接收提交)、html/template渲染HTML页面、内存切片存储Message结构体数据,支持表单提交、重定向防重复、时间格式化及模板遍历,几段代码即可运行。

用 Golang 实现一个轻量级留言板系统,核心在于:用 net/http 处理请求、用 html/template 渲染页面、用内存(或后续可扩展为文件/数据库)存储留言。不依赖框架,几段代码就能跑起来,适合初学后端逻辑和前后端协作的同学。
基础结构:路由与处理器
先定义两个主要接口:/ 展示所有留言并提供提交表单;/post 接收表单提交并重定向回首页。用 http.HandleFunc 注册处理函数即可:
- 主页面处理器读取留言列表,执行模板渲染
- 提交处理器解析表单字段(
r.ParseForm()),校验非空,追加到内存切片,再用http.Redirect跳转避免重复提交 - 所有状态暂存于全局变量(如
var messages []Message),上线前需替换为持久化方案
数据模型与内存存储
定义一个简单结构体承载留言信息:
type Message struct {
ID int `json:"id"`
Username string `json:"username"`
Content string `json:"content"`
CreatedAt time.Time `json:"created_at"`
}
用切片模拟“数据库”:
立即学习“go语言免费学习笔记(深入)”;
- 初始化时设好
messages = make([]Message, 0) - 每次新增用
messages = append(messages, msg) - ID 可用
len(messages) + 1简单生成(注意并发安全,学习阶段可忽略;正式项目应加锁或改用 sync.Map)
HTML 模板渲染留言列表
在 ./templates/index.html 中写模板,使用 Go 的 {{.}}、{{range .}} 语法遍历数据:
- 表单用
提交到后端 - 留言列表用
{{range .Messages}}...{{end}}循环输出,{{.Username}}、{{.Content}}插入字段 - 时间格式化用
{{.CreatedAt.Format "2006-01-02 15:04"}}(Go 时间格式固定写法) - 加载模板用
template.ParseFiles("templates/index.html"),执行时传入 map:t.Execute(w, map[string]interface{}{"Messages": messages})
启动服务与运行
在 main() 函数中注册路由、加载模板、启动服务器:
- 调用
http.ListenAndServe(":8080", nil)启动本地服务 - 确保模板路径正确,静态资源(如 CSS)可放在
./static/并用http.FileServer暴露 -
浏览器访问
http://localhost:8080即可看到可交互的留言板
基本上就这些。功能完整、无外部依赖,是理解 Golang Web 开发流程的扎实起点。后续想加编辑、删除、分页或换 SQLite,都在这个骨架上自然延伸。










