一句话:Go 入门资料索引 + 环境配置踩坑 + Windows 交叉编译部署 Linux 的实操笔记。
写在前面
这份笔记记录我初学 Go 时的资料、工具和环境问题,偏「路线图 + 备忘录」。系统学完语法后,可配合练手项目 Gin-Zone 项目介绍 把知识落到 Web API、GORM、Redis 等实战场景。
核心内容
推荐学习资料
| 类型 | 资源 |
|---|---|
| 视频 | 8 小时转职 Golang 工程师(配套 语雀文档) |
| 视频 | golang 入门到项目实战 |
| 文档 | Go 入门指南 |
| 文档 | Go Web 编程 |
建议顺序:语法与标准库 → Web / Gin → 数据库与部署,每周写一个小 demo 巩固。
开发工具
- IDE:GoLand(JetBrains 全家桶,调试与重构体验好)
- 模块管理:Go Modules(
go mod init/go mod tidy) - 代理:国内拉依赖建议配置
GOPROXY
shell
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on
Linux 安装 Go
CentOS / RHEL 可用 yum 快速安装(版本可能偏旧,生产建议官网二进制包):
shell
yum -y install golang
go version
Windows 交叉编译部署到 CentOS
在 Windows 本机编译 Linux 可执行文件,再上传到服务器运行,无需在服务器装完整构建链。
CMD:
cmd
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build -o main main.go
PowerShell:
powershell
$env:CGO_ENABLED=0
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o main main.go
部署步骤:
- 将
main、配置文件、静态资源上传到服务器目录 - 执行数据库迁移脚本
chmod +x main && ./main(或用 systemd / pm2 守护)
| 变量 | 含义 |
|---|---|
CGO_ENABLED=0 |
静态链接,减少 Linux 上 libc 兼容问题 |
GOOS=linux |
目标系统 |
GOARCH=amd64 |
64 位 x86 |
踩坑与注意
- PowerShell 与 CMD 环境变量语法不同:
set GOOS=linux在 PowerShell 无效,须用$env:GOOS="linux"。 - yum 的 golang 版本可能过旧:新项目建议从 go.dev/dl 下载,并配置
PATH。 - 交叉编译含 CGO 的库:若依赖 sqlite 等需要 CGO 的包,
CGO_ENABLED=0会导致编译失败,需在目标平台构建或配置交叉工具链。 - 可执行文件权限:上传后忘记
chmod +x会报 Permission denied。
小结
Go 学习路径:资料跟视频/书 → 本地 GOPROXY → 小项目练手 → Gin-Zone 级全栈项目。部署上记住 Windows 设 GOOS=linux 再 go build,比直接在低配服务器编译省资源。


全部评论(2)