|
|
@@ -0,0 +1,188 @@
|
|
|
+# 安装、依赖与编译运行教程(Windows + VS Code)
|
|
|
+
|
|
|
+## 1. 需要安装什么
|
|
|
+
|
|
|
+| 组件 | 是否必需 | 作用 |
|
|
|
+| --- | --- | --- |
|
|
|
+| Go SDK | 必需 | 提供编译器、标准库、`go` 命令和测试工具 |
|
|
|
+| VS Code | 推荐 | 编辑代码 |
|
|
|
+| VS Code Go 扩展(`golang.Go`) | 推荐 | 代码补全、格式化、测试入口和调试支持 |
|
|
|
+| Git | 克隆和提交仓库时必需 | 管理代码版本 |
|
|
|
+| gopls | 编辑器功能推荐 | Go 语言服务,供扩展提供补全、跳转等功能 |
|
|
|
+| Delve(`dlv`) | 断点调试时需要 | Go 调试器 |
|
|
|
+
|
|
|
+Go 是编译型语言,安装 Go SDK 即可编译运行,不需要另外安装解释器。编辑器扩展不能代替 SDK。
|
|
|
+
|
|
|
+本项目当前的 `go.mod` 声明 `go 1.27.3`,建议安装 Go 1.27.3 或更新稳定版本。这是当前学习环境使用的版本,不表示示例语法只能在该版本使用。
|
|
|
+
|
|
|
+## 2. 安装 Go SDK
|
|
|
+
|
|
|
+1. 前往 <https://go.dev/dl/> 下载适合 Windows 系统架构的安装包。
|
|
|
+2. 常见 Intel / AMD 64 位电脑选择 `windows-amd64.msi`;ARM64 设备选择对应架构。
|
|
|
+3. 按向导安装,记录安装位置。
|
|
|
+4. 彻底退出并重新打开 VS Code、PowerShell。已运行的程序可能还保留旧 PATH。
|
|
|
+5. 在新的终端检查:
|
|
|
+
|
|
|
+```powershell
|
|
|
+go version
|
|
|
+go env GOROOT GOPATH
|
|
|
+```
|
|
|
+
|
|
|
+如果提示找不到 `go`:
|
|
|
+
|
|
|
+- 检查 SDK 安装目录下是否存在 `bin\go.exe`。
|
|
|
+- 将这个 `bin` 目录加入 Windows 的 `Path` 环境变量,然后重新打开终端。
|
|
|
+- 本次机器上检测到的位置是 `D:\Work_software\Go_sdk\bin`;其他机器请使用实际安装路径,不要直接照搬。
|
|
|
+- 可先用完整路径验证(路径含空格时也使用 `&`):
|
|
|
+
|
|
|
+```powershell
|
|
|
+& 'D:\Work_software\Go_sdk\bin\go.exe' version
|
|
|
+```
|
|
|
+
|
|
|
+通常无需手动配置 `GOROOT` 或 `GOPATH`。`GOROOT` 是 SDK 目录,`GOPATH` 默认用于工具安装、模块缓存等用途,不要求把本项目放进 `GOPATH`。
|
|
|
+
|
|
|
+## 3. 安装 VS Code 和 Go 扩展工具
|
|
|
+
|
|
|
+1. 从 <https://code.visualstudio.com/> 安装 VS Code。
|
|
|
+2. 扩展面板(`Ctrl + Shift + X`)搜索 `golang.Go`,安装由 Go Team at Google 发布的 Go 扩展。
|
|
|
+3. 使用“打开文件夹”打开本项目根目录。
|
|
|
+4. 打开 `main.go`,根据提示安装所需工具;或按 `Ctrl + Shift + P`,执行 `Go: Install/Update Tools`。
|
|
|
+5. 安装 `gopls`;需要 F5 断点调试时再安装 `dlv`。
|
|
|
+
|
|
|
+也可手动安装这些**开发工具**(需要网络,不属于项目运行依赖):
|
|
|
+
|
|
|
+```powershell
|
|
|
+go install golang.org/x/tools/gopls@latest
|
|
|
+go install github.com/go-delve/delve/cmd/dlv@latest
|
|
|
+```
|
|
|
+
|
|
|
+工具通常安装在 `GOPATH\bin`,设置了 `GOBIN` 时以 `GOBIN` 为准。可执行 `go env GOPATH GOBIN` 查看。希望在终端直接执行 `gopls` / `dlv` 时,把工具安装目录加入 PATH。
|
|
|
+
|
|
|
+`@latest` 会随上游更新变化,并可能要求更新的 Go 版本。优先使用扩展推荐版本;若有版本兼容报错,按工具官方说明升级 SDK 或安装兼容的工具版本。
|
|
|
+
|
|
|
+## 4. 获取项目与处理依赖
|
|
|
+
|
|
|
+### 已经打开当前项目
|
|
|
+
|
|
|
+直接在项目根目录打开终端即可。仓库已有 `go.mod`,**不要重复执行 `go mod init`**。
|
|
|
+
|
|
|
+### 在新电脑克隆
|
|
|
+
|
|
|
+先从 <https://git-scm.com/downloads/win> 安装 Git,重启终端后执行:
|
|
|
+
|
|
|
+```powershell
|
|
|
+git --version
|
|
|
+git clone http://vk-fly.com:10880/ZhuTianShuai/go_learn.git
|
|
|
+Set-Location go_learn
|
|
|
+```
|
|
|
+
|
|
|
+如果远程要求认证,请通过本机 Git 凭据管理器或服务端支持的安全方式登录,不要把密码写进远程 URL、代码或文档。该地址使用明文 HTTP,建议服务端启用 HTTPS 或改用 SSH。
|
|
|
+
|
|
|
+### 本项目的依赖
|
|
|
+
|
|
|
+当前只使用标准库 `fmt` 和 `testing`,它们随 SDK 提供,**无需 `go get` 或其他第三方包安装命令**。
|
|
|
+
|
|
|
+可以在项目根目录执行:
|
|
|
+
|
|
|
+```powershell
|
|
|
+go mod tidy
|
|
|
+```
|
|
|
+
|
|
|
+该命令根据源码整理依赖。当前没有第三方模块时,没有 `go.sum` 是正常现象。未来增加外部依赖后,可以用 `go mod download` 下载已声明的模块依赖。
|
|
|
+
|
|
|
+未来确实需要添加某个第三方库时,再执行 `go get 模块路径@版本`,并检查、提交依赖声明的变更。`go install ...@版本` 用于安装命令行工具,不等于为项目添加库依赖。
|
|
|
+
|
|
|
+若依赖下载失败,先检查网络和代理配置:
|
|
|
+
|
|
|
+```powershell
|
|
|
+go env GOPROXY
|
|
|
+```
|
|
|
+
|
|
|
+根据所在网络与组织要求选用可信代理,不要通过关闭校验或使用不可信镜像来绕过问题。本示例运行不需要下载第三方库;如果本地 Go 版本低于模块要求,Go 的自动工具链选择机制仍可能触发工具链下载,因此推荐先安装匹配的 SDK。
|
|
|
+
|
|
|
+## 5. 运行第一个程序
|
|
|
+
|
|
|
+在项目根目录执行:
|
|
|
+
|
|
|
+```powershell
|
|
|
+go run .
|
|
|
+```
|
|
|
+
|
|
|
+预期输出:
|
|
|
+
|
|
|
+```text
|
|
|
+你好,Go!
|
|
|
+欢迎开始 Go 语言学习与测试。
|
|
|
+2 + 3 = 5
|
|
|
+```
|
|
|
+
|
|
|
+这里的 `.` 表示当前目录的包。修改代码并保存后,再次运行该命令即可。
|
|
|
+
|
|
|
+也可用 `go run main.go` 运行当前单文件示例,但后续程序拆分为多个文件时,优先使用 `go run .`,避免遗漏其他源码文件。
|
|
|
+
|
|
|
+## 6. 格式化、测试与检查
|
|
|
+
|
|
|
+```powershell
|
|
|
+# 格式化所有包
|
|
|
+go fmt ./...
|
|
|
+
|
|
|
+# 运行表驱动单元测试
|
|
|
+go test -v ./...
|
|
|
+
|
|
|
+# 查看测试覆盖率
|
|
|
+go test -cover ./...
|
|
|
+
|
|
|
+# 静态检查常见问题
|
|
|
+go vet ./...
|
|
|
+```
|
|
|
+
|
|
|
+`main_test.go` 验证了正数、零、负数和正负混合相加。`_test.go` 文件不会被编译进正常程序。覆盖率可能不到 100%,因为当前只为加法函数写了测试,没有对终端输出入口做测试。
|
|
|
+
|
|
|
+## 7. 编译为 Windows 可执行文件
|
|
|
+
|
|
|
+在 PowerShell 执行:
|
|
|
+
|
|
|
+```powershell
|
|
|
+# 创建构建输出目录,重复执行也可以
|
|
|
+New-Item -ItemType Directory -Force bin | Out-Null
|
|
|
+
|
|
|
+# 编译
|
|
|
+go build -o ./bin/hello.exe .
|
|
|
+
|
|
|
+# 启动编译后的程序
|
|
|
+.\bin\hello.exe
|
|
|
+```
|
|
|
+
|
|
|
+编译成功时通常没有额外输出。PowerShell 运行当前目录下的程序需要 `./` 或 `.\` 前缀,不能只输入 `hello.exe`。
|
|
|
+
|
|
|
+编译后的程序可以在兼容的 Windows 和 CPU 架构环境运行,一般不需要目标电脑安装 Go SDK。本项目没有 C 语言依赖。`bin` 已加入 Git 忽略规则,不提交可执行文件。
|
|
|
+
|
|
|
+## 8. 在 VS Code 中调试
|
|
|
+
|
|
|
+1. 打开 `main.go`,在函数内的可执行语句左侧点击,添加断点。
|
|
|
+2. 按 F5,如提示安装 Delve 则按提示安装。
|
|
|
+3. 如需选择调试配置,选择 Go 的当前包(Launch Package)模式。
|
|
|
+4. 用 F10 单步执行,观察变量 `a`、`b` 的值。
|
|
|
+
|
|
|
+优先先确认终端 `go run .` 能正常执行,再排查编辑器调试问题。不需要额外安装 Code Runner 扩展。
|
|
|
+
|
|
|
+## 9. 日常 Git 提交流程
|
|
|
+
|
|
|
+在仓库初始化和首次推送完成后,日常修改可使用:
|
|
|
+
|
|
|
+```powershell
|
|
|
+git status
|
|
|
+git diff
|
|
|
+git add README.md INSTALL.md main.go main_test.go go.mod .gitignore
|
|
|
+git commit -m "docs: update Go learning notes"
|
|
|
+git push
|
|
|
+```
|
|
|
+
|
|
|
+如果提示缺少提交身份,请设置你自己的用户名与邮箱,可只对当前仓库设置:
|
|
|
+
|
|
|
+```powershell
|
|
|
+git config user.name "你的名字"
|
|
|
+git config user.email "你的邮箱"
|
|
|
+```
|
|
|
+
|
|
|
+提交前检查暂存内容,确保没有密码、令牌、私钥或其他敏感文件。不要为了覆盖远程历史而随意使用强制推送。
|