跳到主要内容

包管理与工程化

一、Go 包(Package)

1.1 包的基本概念

  • 包定义
  • 包的作用
  • 包命名规范

1.2 包的导入

  • import 语法
  • 远程包导入
  • 本地包导入
  • 相对导入限制

1.3 包的可见性

  • 导出标识符(大写)
  • 未导出标识符(小写)
  • 包级变量和函数

1.4 包的初始化

  • init 函数
  • 初始化顺序
  • 多 init 函数

二、Go Modules

2.1 Go Modules 基础

  • go.mod 文件
  • go.sum 文件
  • 模块初始化(go mod init)

2.2 依赖管理

  • 添加依赖
  • 更新依赖
  • 移除依赖
  • 依赖版本

2.3 go mod 命令

  • go mod init
  • go mod tidy
  • go mod download
  • go mod verify
  • go mod why
  • go mod edit

2.4 版本号

  • 语义化版本
  • 伪版本
  • 版本选择

2.5 私有仓库

  • GOPRIVATE
  • GOPROXY
  • GOSUMDB
  • 认证配置

三、Go 命令工具

3.1 编译命令

  • go build
  • go run
  • go install
  • go clean

3.2 测试命令

  • go test
  • go bench
  • go list

3.3 工具命令

  • go fmt
  • go vet
  • go fix
  • go generate

3.4 依赖命令

  • go mod
  • go get
  • go work(工作区)

四、项目结构

4.1 标准项目布局

  • cmd 目录
  • internal 目录
  • pkg 目录
  • api 目录
  • web 目录
  • configs 目录
  • scripts 目录
  • test 目录

4.2 不同类型项目结构

  • 库项目
  • 应用项目
  • Web 服务
  • CLI 工具

4.3 项目最佳实践

  • 分层架构
  • 依赖倒置
  • 包职责划分

五、构建与发布

5.1 编译配置

  • 构建标签
  • 平台编译
  • 交叉编译
  • 编译优化

5.2 版本信息

  • ldflags
  • 版本注入
  • 构建信息

5.3 发布流程

  • 打标签
  • 发布版本
  • Go Playground

六、依赖管理进阶

6.1 依赖冲突解决

6.2 最小版本选择(MVS)

6.3 Vendor 目录

  • go mod vendor
  • vendor 模式

6.4 工作区(Workspace)

  • go work 命令
  • 多模块开发

七、CI/CD

7.1 持续集成

  • GitHub Actions
  • GitLab CI

7.2 自动化测试

7.3 自动化部署

7.4 代码质量检查