惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
V
Vulnerabilities – Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
Latest news
Latest news
博客园 - 三生石上(FineUI控件)
美团技术团队
aimingoo的专栏
aimingoo的专栏
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
Y
Y Combinator Blog
T
Tailwind CSS Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tenable Blog
W
WeLiveSecurity
L
LINUX DO - 热门话题
D
Docker
Cyberwarzone
Cyberwarzone
量子位
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
O
OpenAI News
Hacker News - Newest:
Hacker News - Newest: "LLM"
Scott Helme
Scott Helme
IT之家
IT之家
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第15章:插件与自定义工作台开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw 第07章:参数化表达式与Spreadsheet 第08章:装配设计Assembly 第06章:Part工作台与几何内核 第05章:PartDesign实体特征建模 第04章:草图Sketcher约束建模 第02章:安装版本与工作环境配置 第03章:界面工作台与基础操作 第01章:项目全景与学习路线 第十二章:插件开发、研究功能与最佳实践 第十章:定时任务与自动化(Cron) 第七章:技能、记忆与自学习闭环 第八章:MCP 集成与上下文文件 第六章:工具系统与终端后端 第五章:模型供应商与配置体系 Hermes Agent 教程目录 第十一章:语音、视觉、浏览器与子代理协作 第四章:CLI/TUI 与会话管理 第十二章:学习路线、实战方案与最佳实践 第十一章:源码结构、开发调试与插件开发 第十章:自动化、远程访问、日志与排障 第九章:Control UI、节点、Canvas 与语音能力 第七章:工具、技能、插件与能力扩展 第八章:安全模型、访问控制与沙箱实践 第六章:Agent 工作区、会话与多智能体路由 第五章:多通道消息接入与聊天平台配置 第四章:配置体系、模型接入与认证管理 第三章:Gateway 架构、协议与运行机制 第二章:安装、环境准备与快速上手 第一章:OpenClaw 项目概览与核心定位 oh-my-openagent 教程目录 09-命令模型回退与配置参考 10-实战案例最佳实践与故障排除 05-工作模式-Ultrawork-Prometheus-Atlas 08-Hooks与MCP系统 06-Category与Skill系统 07-核心工具链 04-智能体全景详解 03-安装与环境配置 02-整体架构与多模型编排机制 01-项目简介与核心理念 01-项目概览与学习路线 02-安装部署与工具适配 03-Skill机制与using-superpowers 05-TDD系统化调试与完成前验证 04-需求澄清方案设计与计划编写 07-并行智能体子智能体与Git-Worktree 第六章:代码审查、反馈处理与分支收尾 08-中国特色Skills与本土团队落地 09-MCP构建工作流执行与自定义Skill 第23章:FreeCAD-Python-API Clipper2 C# 源码解读教程 第19章:PolyTree 多边形树结构 第20章:实际应用与最佳实践 第18章:Minkowski 和与差 第17章:RectClip 矩形裁剪优化 第16章:ClipperOffset 偏移类详解 第15章:填充规则详解 第14章:布尔运算执行流程 第13章:ClipperD 浮点裁剪类 第11章:OutRec 与 OutPt 输出结构 第9章:Active 活动边结构 第10章:Vertex 顶点与 LocalMinima 局部极小值 第12章:Clipper64 裁剪类详解 第7章:高精度运算与128位整数 第8章:ClipperBase 基类详解 第5章:枚举类型与常量定义 第6章:InternalClipper 内部工具类 第2章:核心数据结构 - Point64、PointD 第3章:路径与多边形表示 - Path64、PathD、Paths64、PathsD 第4章:矩形边界 - Rect64、RectD
第02章 - 环境搭建与工具链
我才是银古 · 2026-06-19 · via 博客园 - 我才是银古

第02章 - 环境搭建与工具链

本章将带你完成 Go 开发环境的搭建,理解 Go 的工具链、目录结构与环境变量,并编写运行你的第一个 Go 程序。

2.1 安装 Go

2.1.1 下载安装包

Go 的官方下载地址为 https://go.dev/dl/。官方为主流操作系统提供了预编译安装包:

  • Windows.msi 安装程序,双击安装即可。
  • macOS.pkg 安装程序,或使用 Homebrew 安装。
  • Linux.tar.gz 压缩包,解压到 /usr/local

2.1.2 Linux 下安装示例

# 下载(以 1.22.0 为例,请替换为最新版本)
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz

# 删除旧版本并解压到 /usr/local
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

# 配置 PATH(写入 ~/.bashrc 或 ~/.profile)
export PATH=$PATH:/usr/local/go/bin

2.1.3 macOS 下使用 Homebrew

brew install go

2.1.4 验证安装

安装完成后,打开终端执行:

go version

若输出类似 go version go1.22.0 linux/amd64 的信息,则说明安装成功。

2.2 环境变量详解

Go 的行为由若干环境变量控制,可通过 go env 命令查看全部配置:

go env

常用的核心环境变量包括:

变量 含义
GOROOT Go 安装目录,一般无需手动设置,安装包会自动配置
GOPATH 工作区目录,默认是 $HOME/go,存放第三方包和编译产物
GOBIN go install 生成的可执行文件存放目录,默认 $GOPATH/bin
GOOS 目标操作系统,用于交叉编译,如 linuxwindowsdarwin
GOARCH 目标 CPU 架构,如 amd64arm64
GOPROXY 模块代理地址,国内推荐设置为镜像加速下载
GO111MODULE 是否启用 Modules,现代版本默认为 on
GOCACHE 编译缓存目录

2.2.1 配置国内代理(重要)

由于网络原因,国内开发者下载依赖时常常超时。强烈建议配置 Go 模块代理:

# 设置七牛云提供的公共代理
go env -w GOPROXY= https://goproxy.cn ,direct

# 也可使用阿里云代理
# go env -w GOPROXY= https://mirrors.aliyun.com/goproxy/ ,direct

go env -w 会将配置写入用户级配置文件(通常位于 $HOME/.config/go/env),无需修改系统环境变量即可持久化生效。

2.3 编写第一个 Go 程序

2.3.1 创建项目

mkdir hello && cd hello
go mod init example/hello

go mod init 会创建一个 go.mod 文件,声明模块路径,标志着这是一个 Go 模块。

2.3.2 编写代码

创建文件 main.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

代码解析:

  • package main:声明这是一个可执行程序的入口包。只有 main 包且包含 main 函数的程序才能编译为可执行文件。
  • import "fmt":导入标准库中的格式化输入输出包。
  • func main():程序入口函数,运行时从这里开始执行。
  • fmt.Println:打印一行文本到标准输出。

2.3.3 运行程序

# 直接运行(编译并执行,不生成持久化文件)
go run main.go

# 输出: Hello, Go!

2.4 Go 工具链命令详解

Go 提供了一个统一的 go 命令,集成了构建、测试、依赖管理等众多子命令。以下是最常用的命令:

命令 作用
go run 编译并直接运行程序,不保留可执行文件
go build 编译程序,生成可执行文件
go install 编译并安装到 GOBIN 目录
go test 运行测试
go fmt 格式化代码(按官方风格)
go vet 静态检查,发现可疑代码
go mod 模块依赖管理
go get 添加/更新依赖
go doc 查看包/函数文档
go env 查看/设置环境变量
go clean 清理编译产物和缓存
go tool 调用底层工具(如 pprof、trace)

2.4.1 go build 详解

# 编译当前目录,生成与目录同名的可执行文件
go build

# 指定输出文件名
go build -o myapp

# 交叉编译:在任意平台生成 Linux ARM64 可执行文件
GOOS=linux GOARCH=arm64 go build -o myapp-linux-arm64

2.4.2 go fmt:统一代码风格

Go 极其强调代码风格的一致性,并通过 gofmtgo fmt 的底层工具)强制规范代码格式。这意味着所有 Go 代码看起来都高度一致,消除了团队内关于"花括号该放哪里""用 Tab 还是空格"的争论。

# 格式化当前目录所有 .go 文件
go fmt ./...

约定:Go 使用 Tab 缩进,左花括号不换行。提交代码前务必运行 go fmt

2.4.3 go vet:静态分析

go vet 能在不运行程序的情况下发现潜在错误,如 Printf 格式化参数不匹配、不可达代码、错误的结构体标签等:

go vet ./...

2.5 IDE 与编辑器配置

主流的 Go 开发工具有:

  • Visual Studio Code + 官方 Go 扩展(最流行,免费):提供智能补全、跳转、调试、重构等功能,底层依赖 gopls(Go 官方语言服务器)。
  • GoLand:JetBrains 出品的专业 Go IDE,功能强大(商业软件)。
  • Vim/Neovim + vim-go 或 LSP 插件:适合命令行重度用户。

安装 VS Code Go 扩展后,首次打开 Go 文件时会提示安装一系列工具(goplsdlv 调试器等),按提示安装即可。

2.6 GOPATH 模式与 Modules 模式

在 Go 1.11 之前,所有代码必须放在 GOPATH/src 目录下,依赖管理混乱。自 Go 1.16 起,Modules 成为默认且推荐的依赖管理方式,项目可以放在任意目录,通过 go.mod 管理依赖。

建议:新项目一律使用 Modules 模式,无需关心 GOPATH。本教程后续内容均基于 Modules。

关于 Modules 的详细用法,我们将在第 10 章深入讲解。

2.7 本章小结

本章完成了 Go 开发环境的搭建,介绍了 Go 工具链的核心命令、关键环境变量(特别是国内代理配置),并运行了第一个 Go 程序。掌握 go rungo buildgo fmtgo vet 等命令是后续学习的基础。

下一章我们将系统学习 Go 的基础语法与数据类型。