如何在Golang中构建书籍管理系统_实现增删改查功能

12次阅读

go书籍管理系统用Book结构体切片实现CRUD:添加时ID自增并校验标题;查询支持全部返回或按ID遍历查找;更新仅覆盖非空字段;删除用切片截断,全程需校验ID有效性。

如何在Golang中构建书籍管理系统_实现增删改查功能

在 Go 语言中构建一个轻量级书籍管理系统,核心是用结构体建模、切片或 map 存储数据、函数封装 CRUD 逻辑,无需数据库即可快速验证业务流程。下面以内存存储为例,清晰实现增删改查功能。

定义书籍结构体与存储容器

先设计数据模型,用 Book 结构体表示单本书,包含 ID(自增)、标题、作者、ISBN 等常用字段;用全局切片 books 模拟存储,便于演示和调试:

注意:实际项目建议用 map[int]*Book 提升查找效率,ID 作 key;此处用切片更直观体现“列表管理”逻辑。

实现添加书籍(Create)

添加时生成唯一 ID(取当前切片长度 +1),校验必填字段(如 Title 不为空),追加到切片末尾:

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

  • 检查 Title 是否为空,空则返回错误
  • ID 自增:新书 ID = len(books) + 1
  • 使用 append(books, newBook) 添加

实现查询书籍(Read)

支持两种查法:查全部、按 ID 查单本。按 ID 查时遍历切片,匹配后立即返回;未找到返回 nil 和错误提示:

  • GetAll() 直接返回 books 切片副本(避免外部修改原数据)
  • GetByID(id int) 遍历比较,推荐用 for range + index,简洁安全
  • 返回指针 *Book 更灵活(便于后续更新)

实现更新与删除(Update & delete

更新需先通过 ID 找到原记录,再赋值新字段(跳过空字段可选);删除则用切片截断技巧,保持顺序不变:

  • UpdateByID(id int, title, author, isbn String):查到后仅覆盖非空字段,保留原值更合理
  • DeleteByID(id int):用 books = append(books[:i], books[i+1:]...) 删除第 i 项
  • 操作前务必检查 ID 是否存在,避免 panic
text=ZqhQzanResources