Go未安装或PATH未配置导致go version报错;go mod init失败主因是目录名含非法字符或模块未启用;go run用于调试,go build生成可执行文件;需配置GOPROXY=https://goproxy.cn,direct解决国内依赖拉取问题。

go version 命令报错或找不到命令
说明 Go 没装进系统 PATH,或者安装根本没完成。Windows 用户用 MSI 安装后一般自动配置好,Linux/macOS 手动解压后必须自己加 PATH。
- Linux/macOS:检查
~/.bashrc或~/.zshrc是否有这行:export PATH=$PATH:/usr/local/go/bin(路径要和你解压位置一致,比如/home/you/go/bin) - 改完记得运行
source ~/.bashrc(或source ~/.zshrc) - Windows:打开「系统属性 → 高级 → 环境变量」,确认
Path里包含C:\Program Files\Go\bin(或你自定义的安装路径下的bin目录) - 验证:新开一个终端,直接输
go version,输出类似go version go1.24.4 linux/amd64才算成功
go mod init 报错 “cannot determine module path”
这是新建项目时最常卡住的地方——当前目录名含非法字符、不在 GOPATH 下(旧习惯残留)、或父目录已有 go.mod 干扰。
- 确保目录名只含英文、数字、下划线,不要有空格、中文、点号(如
my.project不行,my_project可以) - 不用管
GOPATH:Go 1.16+ 默认启用 Module 模式,go mod init后会生成go.mod,项目可放任意路径 - 如果提示
go: modules disabled by GO111MODULE=off,运行go env -w GO111MODULE=on开启模块支持 - 简单起手:
mkdir hello && cd hello && go mod init hello
go run 和 go build 的区别与误用
go run 是开发调试用的快捷方式,go build 才是真正产出可执行文件的动作。很多人混淆两者用途,导致部署失败或调试不一致。
-
go run main.go:编译并立即执行,不生成文件;适合快速验证逻辑 -
go build:在当前目录生成同名可执行文件(如 Linux 下叫hello),不运行;适合打包分发 -
go build -o app:指定输出文件名,避免和源码名冲突(比如你有app.go,直接go build会生成app,可能覆盖源文件) - 注意:
go run .会编译当前目录所有.go文件,但要求只有一个main函数入口;多个main包会报错multiple main packages
国内代理没配导致 go get 卡死或超时
Go 默认代理 https://proxy.golang.org 在国内基本不可用,不配代理的话 go mod download 或 go get 会卡几十秒甚至失败。
立即学习“go语言免费学习笔记(深入)”;
- 推荐配置国内镜像:
go env -w GOPROXY=https://goproxy.cn,direct - 验证是否生效:
go env GOPROXY应输出https://goproxy.cn,direct -
direct表示对私有仓库(如公司内网 Git)不走代理,直接拉取,这个必须保留 - 如果公司用私有模块仓库,还需额外加
go env -w GONOPROXY=git.internal.company.com
go mod init 的命名规则——前者让依赖下载不卡顿,后者决定整个模块能否被正确识别和引用。这两步做错,后面写再多代码也跑不起来。


















