go 1.16+默认启用模块模式,不再强制依赖gopath的src/bin/pkg结构;传统工作区仅用于维护旧项目或本地包开发,现代推荐直接用go.mod管理依赖。

Go 环境现在基本不用手动配 GOPATH 和 src/pkg/bin 目录结构了,模块模式(go mod)已成默认,强行沿用旧工作区反而容易出错。
go version 和 go env 验证安装是否真正生效
装完 go 后只跑 go version 是不够的。常见错误是:安装程序写入了环境变量,但你没关掉所有终端窗口,导致 PATH 里的 %GOROOT%\bin 没加载进来。
- 必须新开一个 CMD/PowerShell/Terminal,再执行
go version和go env - 重点检查输出里
GOROOT是否指向真实安装路径(如C:\Program Files\Go),GO111MODULE是否为on - 如果
go env报错或字段为空,说明环境变量根本没生效,别往下走
国内拉包失败?优先检查 GOPROXY 和 GOSUMDB
新建项目后 go mod init 或 go run 卡在 Fetching github.com/xxx,90% 是代理没设对,不是网络问题。
Go语言(Golang)1.26.0版本提供 Go 官方 Windows amd64 MSI 安装包下载入口,版本号 1.26.0,可用于旧项目维护、兼容性测试和指定版本开发环境配置。
- 执行这三条命令(Windows CMD 或 PowerShell 均可):
go env -w GO111MODULE=on<br>go env -w GOPROXY=https://goproxy.cn,direct<br>go env -w GOSUMDB=sum.golang.org
-
GOPROXY必须含,direct,否则私有仓库或本地模块会失败 -
GOSUMDB=sum.golang.org在国内常超时,可临时换成off(仅开发阶段):go env -w GOSUMDB=off,上线前务必改回
go build 编译时输出文件名和平台控制
go build 默认生成当前目录名同名的可执行文件,不加扩展名,这点和 Windows 习惯冲突,容易误以为没生成。
- 想指定输出名:用
-o参数,例如go build -o ./dist/myapp.exe main.go - 跨平台编译必须显式设环境变量,例如 Windows 上编译 Linux 版:
GOOS=linux GOARCH=amd64 go build -o ./dist/myapp-linux main.go
- 注意:
CGO_ENABLED=0要加在前面才能静态链接,否则交叉编译可能报exec: "gcc": executable file not found
go run 和 go build 的行为差异与适用场景
go run 不生成文件,适合快速验证;go build 生成二进制,才是发布动作。两者对 main 包的识别逻辑一致,但路径处理容易踩坑。
-
go run .表示运行当前目录下整个main包(自动找所有.go文件),最常用 -
go run main.go utils.go只运行列出的文件,漏文件会报undefined: xxx -
go build在非main包目录下会静默成功但不输出任何文件——它只对package main生效 - 发布前务必用
go build -o xxx显式构建,并用file xxx(Linux/macOS)或./xxx.exe(Windows)确认能直接运行
模块初始化后 go.mod 里 module 名不要带 .git 后缀,也不要写成 github.com/user/repo.git;正确写法是 github.com/user/repo。这个细节一旦写错,后续所有 go get、go install 都会找不到本地路径。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










