Go安装后无需配置GOROOT,PATH正确即可运行;go mod init初始化模块,net/http可快速搭建API,go run .适合多文件开发,go build生成静态二进制文件。

Go安装后不配GOROOT也能跑
绝大多数新手卡在第一步,不是因为Go装不上,而是被GOROOT和GOPATH吓退。其实从Go 1.16起,只要go命令能执行,GOROOT就自动推导;你根本不用手动设它。
常见错误现象:go: cannot find main module 或 command not found: go,本质是PATH没加对,不是GOROOT没配好。
- macOS/Linux:确认
/usr/local/go/bin(默认安装路径)已写入PATH,用which go验证 - Windows:检查系统环境变量里
Path是否包含C:\Go\bin - 别碰
GOROOT——除非你把Go装在非标准路径且go version报错,否则它纯属干扰项
go mod init 是启动项目的唯一必要命令
旧教程还在教你怎么摆弄GOPATH/src目录结构,现在完全没必要。只要项目根目录下执行go mod init myapp,Go就自动启用模块模式,所有依赖都会存到go.mod里,不再受GOPATH约束。
容易踩的坑:
立即学习“go语言免费学习笔记(深入)”;
- 项目名别用
main或go这种保留字,会触发go mod init失败 -
go mod init后立刻go run .,哪怕只有package main和func main(){}也能成功——这是验证模块初始化是否生效的最快方式 - 如果
go.mod里出现// indirect标记,说明某个依赖没被直接引用,先别管,等真正用到再处理
HTTP服务用net/http比gin更轻量
想快速起一个API端点,别急着go get github.com/gin-gonic/gin。Go标准库net/http足够应付90%的简单场景,零依赖、无学习成本、启动快。
实操建议:
- 写个
main.go,只导入"net/http"和"fmt" - 用
http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "ok") })注册路由 -
http.ListenAndServe(":8080", nil)启动——不需要任何第三方包 - 浏览器访问
http://localhost:8080/ping看到响应,就证明环境完全可用
gin适合需要中间件、参数解析、JSON自动绑定等进阶功能时再引入,不是起步必需品。
go run . 和 go build 的区别直接影响调试节奏
开发阶段用go run .,而不是go run main.go,尤其当项目有多个文件时。前者会编译当前目录下所有.go文件,后者只编译单个文件,容易漏掉逻辑。
但要注意:
-
go run .每次执行都重新编译,适合快速迭代;go build生成可执行文件,适合部署或性能测试 - 如果
go run .报错说找不到某个函数,大概率是那个函数所在文件没加package main,或者文件名以_test.go结尾被忽略 -
go build -o app生成的二进制文件默认静态链接,直接复制到另一台同架构Linux机器就能跑,这才是Go部署真正的“极简”所在
环境搭建的复杂感,大多来自过早引入框架、过早纠结目录结构、过早配置代理。先把go version敲出来,再让net/http返回一行文字,剩下的都是可选动作。


















