能跑通 go run main.go 就算环境搭好了;真正卡新手的是 path 未生效、go111module 关闭致依赖报错,或误以为必须用 gopath 目录结构。

能跑通 go run main.go 就算环境搭好了,其余都是可选优化;真正卡住新手的不是语法,而是 PATH 没生效、GO111MODULE 关闭导致依赖报错、或误以为必须用 GOPATH 目录结构。
验证 go 命令是否真可用
别只信安装程序“完成”提示——很多 Windows/macOS 用户装完发现终端里敲 go version 报 command not found。这不是没装好,是 shell 没读到新 PATH。
- Windows:打开新的 PowerShell 或 CMD(不是旧的已打开窗口),再试
go version - macOS/Linux:改过
~/.zshrc或~/.bash_profile后,必须执行source ~/.zshrc,否则 PATH 不更新 - 如果仍失败,手动查
GOROOT路径:go env GOROOT,确认该路径下存在bin/go文件
绕过 GOPATH 直接写代码
Go 1.13+ 默认启用模块(Modules),GOPATH 已非必需。新手硬套旧教程的 $GOPATH/src/xxx 目录结构,反而容易因路径不对引发 cannot find package 错误。
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
- 新建任意空文件夹,比如
~/my-first-go,cd 进去 - 写
main.go,内容就三行:package main、import "fmt"、func main() { fmt.Println("ok") } - 直接运行
go run main.go—— 成功就说明环境核心功能完好 - 不需要
go mod init也能跑,但加了它后续引入第三方库才不会出错
编译生成可执行文件的两种方式
go run 是边编译边执行,适合调试;真正交付要用 go build 产出二进制。新手常混淆两者的输出行为和路径逻辑。
-
go run main.go:不生成文件,标准输出直接打印到终端 -
go build:当前目录生成同名可执行文件(如 macOS/Linux 是my-first-go,Windows 是my-first-go.exe) -
go build -o myapp:指定输出文件名,避免和目录名冲突 - 注意:
go build要求当前目录有且仅有一个package main文件,否则报no Go files in current directory
国内用户必设 GOPROXY
首次 go mod tidy 或 go get 时卡住不动、超时、报 timeout to https://proxy.golang.org,基本就是代理没设。
- 执行:
go env -w GOPROXY=https://goproxy.cn,direct - 这个设置会写入
go env输出里的GOPROXY行,下次go mod download就走国内镜像 - 不用删
go.mod或重装 Go,设完立刻生效 - 如果公司内网禁外网,可临时切回
go env -w GOPROXY=direct,但需确保所有依赖已缓存本地
真正麻烦的从来不是“怎么装”,而是装完后某个命令在终端 A 里能跑、终端 B 里报错——本质是 shell 配置没同步;或者 go build 出来的文件双击打不开,因为忘了它是命令行程序,不是图形界面应用。这些细节比语法更早拦住人。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










