如何用Golang实现留言板系统_Golang简单后端与模板展示

用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"`
}

用切片模拟“数据库”:

  • 初始化时设好 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,都在这个骨架上自然延伸。