跳到主要内容

工程化知识体系概览

问题

Go 项目的工程化实践包括哪些方面?

答案

知识体系

核心实践

实践工具/方案说明
依赖管理Go Modulesgo.mod / go.sum
项目结构Standard Layoutcmd/ internal/ pkg/
代码规范golangci-lint聚合多个 Linter
构建Makefile统一构建入口
容器化Docker 多阶段构建编译 + 最小镜像
CI/CDGitHub Actions自动测试/部署
日志zap / zerolog结构化日志
配置Viper多源配置

常见面试问题

Q1: Go 项目和 Java/Node.js 项目的工程化有什么不同?

答案

  • 编译为二进制:不需要运行时环境,Docker 镜像可以用 scratch(空镜像)
  • go mod:不需要 npm/Maven 中央仓库,直接从 Git 拉取
  • 内置格式化gofmt 统一风格,没有 tab vs space 之争
  • 内置测试go test 不需要额外测试框架
  • 交叉编译:一条命令编译任意平台 GOOS=linux GOARCH=amd64 go build

相关链接