一句话: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
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on

Linux 安装 Go

CentOS / RHEL 可用 yum 快速安装(版本可能偏旧,生产建议官网二进制包):

yum -y install golang
go version

Windows 交叉编译部署到 CentOS

在 Windows 本机编译 Linux 可执行文件,再上传到服务器运行,无需在服务器装完整构建链。

CMD:

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build -o main main.go

PowerShell:

$env:CGO_ENABLED=0
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o main main.go

部署步骤:

  1. main、配置文件、静态资源上传到服务器目录
  2. 执行数据库迁移脚本
  3. chmod +x main && ./main(或用 systemd / pm2 守护)
变量 含义
CGO_ENABLED=0 静态链接,减少 Linux 上 libc 兼容问题
GOOS=linux 目标系统
GOARCH=amd64 64 位 x86

踩坑与注意

  1. PowerShell 与 CMD 环境变量语法不同set GOOS=linux 在 PowerShell 无效,须用 $env:GOOS="linux"
  2. yum 的 golang 版本可能过旧:新项目建议从 go.dev/dl 下载,并配置 PATH
  3. 交叉编译含 CGO 的库:若依赖 sqlite 等需要 CGO 的包,CGO_ENABLED=0 会导致编译失败,需在目标平台构建或配置交叉工具链。
  4. 可执行文件权限:上传后忘记 chmod +x 会报 Permission denied。

小结

Go 学习路径:资料跟视频/书 → 本地 GOPROXY → 小项目练手 → Gin-Zone 级全栈项目。部署上记住 Windows 设 GOOS=linuxgo build,比直接在低配服务器编译省资源。

延伸阅读