必须确保go version能正常输出且go mod init与go get可成功拉取依赖(如gjson),国内用户需配置goproxy=https://goproxy.cn,direct;无需设置gopath,path须包含go安装bin目录,vs code应从终端启动以继承环境变量。

直接上手写扫描器前,go 命令必须能正常运行,且 go mod 能拉取依赖——否则连 net、sync 这些基础包都可能报错,更别说调用第三方库做协议解析或并发控制。
验证 go version 和 GOPROXY 是否生效
很多“环境已装好”的假象来自只跑了 go version 就以为万事大吉。实际写扫描器时,go mod init 和 go get 才是真门槛。
-
go version输出正常只是说明二进制存在,不保证网络和模块功能可用 - 国内用户必须设
GOPROXY,否则go get github.com/projectdiscovery/httpx/cmd/httpx这类安全工具依赖大概率超时失败 - 执行
go env GOPROXY,确认输出不是https://proxy.golang.org或空值;推荐值:https://goproxy.cn,direct - 顺手测试:新建目录,
go mod init testscan && go get github.com/tidwall/gjson—— 这个轻量 JSON 解析库常用于处理扫描结果,能成功拉取才算过关
不要碰 GOPATH(除非你明确要维护旧项目)
Go 1.11+ 默认启用模块模式,GOPATH 对新项目已无实质作用。强行设置反而容易引发路径混淆,比如 go run 找不到 main.go 或 go install 输出到错误位置。
- 检查
go env GOPATH,如果它指向$HOME/go但你并不打算把扫描器源码放进去,就别管它 - 现代扫描器项目结构应是:根目录下有
go.mod,所有代码在同级或子目录,与GOPATH无关 - 唯一需要手动干预的环境变量只有
GOPROXY和GOSUMDB(设为sum.golang.google.cn防校验失败)
macOS / Linux 下 PATH 是否包含 /usr/local/go/bin
Windows 用户通常走安装向导自动配好 PATH,但 macOS 和 Linux 经常漏掉这步,导致终端里能跑 go version,但在 VS Code 的集成终端里却提示 command not found: go。
- 运行
which go,如果无输出或路径不对(比如指向/opt/homebrew/bin/go),说明 PATH 没生效 - 编辑
~/.zshrc(macOS Catalina 及以后默认 shell)或~/.bashrc,确保含export PATH=$PATH:/usr/local/go/bin - 改完后执行
source ~/.zshrc,再新开一个终端窗口测试,避免缓存干扰 - VS Code 启动方式很重要:必须从终端执行
code .打开项目,否则它不会继承当前 shell 的 PATH
真正卡住扫描器开发的,往往不是算法或协议细节,而是某个 go get 失败后没意识到是代理问题,或者 go run 报错 “cannot find module” 却去翻 GOPATH 文档——这些点不提前扫清,后面每写一行网络 I/O 代码都在埋坑。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











