“go: command not found”说明path未配置,需将go的bin目录(如/usr/local/go/bin或c:\go\bin)加入系统path,并新开终端验证;linux/macos需source配置文件,windows需重启命令行。

go version 命令没反应或报“command not found”
说明 go 命令根本没进系统 PATH,不是版本问题,是路径没配对。Windows 安装 .msi 后通常自动配置,但若用 zip 手动解压、或 Linux/macOS 用 tar.gz 安装,就极易漏掉这步。
- Linux/macOS:检查
~/.bashrc或~/.zshrc是否有export PATH=$PATH:/usr/local/go/bin(默认安装路径)或export PATH=$PATH:$GOROOT/bin(自定义安装时) - Windows:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,确认“系统变量”里
Path包含C:\Go\bin(默认)或你实际解压的go\bin目录 - 改完配置后,必须新开终端(CMD/PowerShell/Terminal)再试
go version,旧窗口不会自动 reload
go run main.go 报错 “no Go files in current directory”
常见于刚建好空目录就急着运行,或文件名不是 main.go,或不在包 main 下。Go 不像 Python 那样靠文件名推断入口,它严格依赖包声明和函数签名。
- 确保当前目录下存在且仅有一个
.go文件(或多个但都属同一模块),文件开头必须是package main -
main函数必须存在,且签名严格为func main()(无参数、无返回值) - 如果用了
go mod init初始化模块,但还没写代码,go run会直接失败——它不接受空模块 - 临时验证:直接在终端执行
echo -e "package main\nimport \"fmt\"\nfunc main() { fmt.Println(\"ok\") }" > main.go && go run main.go
go build 生成的可执行文件在哪?为什么 ./xxx 没权限?
go build 默认把二进制文件生成在当前目录,文件名就是目录名(如项目叫 hello,则生成 hello),不是 main 或 a.out。Linux/macOS 下它默认没有执行权限,得手动加。
- 想指定输出路径和文件名:用
go build -o ./bin/myapp main.go - Linux/macOS 运行前需
chmod +x ./myapp(Windows 可忽略) - 注意:如果当前目录有多个
.go文件,go build会尝试全部编译;若其中某个文件不属于main包,会报错cannot build non-main package - 交叉编译时(比如在 macOS 上编译 Linux 二进制),务必加
GOOS=linux GOARCH=amd64 go build -o myapp-linux,否则默认按当前系统生成
go mod init 后 go run 仍报依赖找不到
启用模块模式后,go run 不再读 GOPATH,而是依赖 go.mod 里声明的依赖版本。但如果你引入了第三方包(比如 github.com/sirupsen/logrus),而没显式下载,Go 不会自动拉取。
- 首次使用新包时,直接
go run main.go会触发自动go get,但有时因网络或代理失败,导致包没真正落地 - 稳妥做法:先
go get github.com/sirupsen/logrus@v1.9.0(指定版本),再go run;或运行go mod tidy自动补全并清理未用依赖 -
go.mod文件里require行末尾带// indirect,说明该依赖没被当前代码直接 import,只是被其他依赖间接引用——这种包不能删,删了可能编译失败
go、文件是 package main 且有 func main()、模块依赖已 resolve。其余都是围绕这三点的权限、路径、网络细节。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











