环境准备与项目初始化
02 - 环境准备与项目初始化
前置要求
- Go 1.21+ 已安装
- 基本的 Go 语法知识(struct、method、interface)
- 熟悉 Git 基本操作
- 一个终端(Windows Terminal、iTerm2、GNOME Terminal 等)
步骤 1:创建项目目录
mkdir terminal_resume
cd terminal_resume
go mod init terminal_resume
模块名 terminal_resume 将作为后续所有内部包的导入路径前缀。
步骤 2:添加依赖
go get github.com/charmbracelet/wish@latest
go get github.com/charmbracelet/bubbletea@latest
go get github.com/charmbracelet/lipgloss@latest
go get gopkg.in/yaml.v3@latest
执行后 go.mod 将自动记录依赖版本。
步骤 3:规划目录结构
terminal_resume/
├── main.go # SSH 服务器入口
├── cmd/
│ └── local/
│ └── main.go # 本地测试入口(无需 SSH)
├── internal/
│ ├── app/
│ │ └── model.go # Bubble Tea 模型(核心)
│ ├── style/
│ │ └── theme.go # 样式定义
│ └── data/
│ ├── resume.go # 数据结构
│ ├── resume.yaml # 简历内容(可配置)
│ ├── loader.go # YAML 加载器
│ └── loader_test.go # 加载测试
├── docs/ # 本课程文档
├── go.mod
├── go.sum
└── README.md
目录设计原则
internal/:Go 标准约定,表示内部包,不允许外部项目导入cmd/local/:本地测试入口,生产环境使用根目录main.go- 双入口设计:
- 根目录
main.go— Wish SSH 服务器(生产) cmd/local/main.go— 直接运行 Bubble Tea(开发调试)
- 根目录
步骤 4:创建目录
mkdir -p cmd/local
mkdir -p internal/app
mkdir -p internal/style
mkdir -p internal/data
步骤 5:验证环境
创建临时文件验证编译环境:
// main.go
package main
import "fmt"
func main() {
fmt.Println("Environment OK!")
}
go run main.go
# 输出:Environment OK!
关键技术点:go:embed
本项目使用 go:embed 将 YAML 配置文件嵌入二进制:
import _ "embed"
//go:embed resume.yaml
var resumeYAML []byte
注意:
//go:embed是编译器指令,必须紧跟在变量声明上方- 文件路径相对于当前
.go文件的位置 - 需要
_ "embed"空白导入以注册 embed 包 - 嵌入后二进制文件独立运行,无需外部 YAML 文件
本章小结
- 初始化 Go 模块并安装 Charm 生态依赖
- 采用
internal/标准目录结构 - 双入口设计:SSH 服务器 + 本地调试
go:embed实现配置内嵌
下一步
🛒 站长推荐(京东联盟)
- 《Go 程序设计语言》(Go 语言圣经,机械工业出版社) —— Go 官方团队出品,公认入门第一书
- 《Go 语言实战》(异步图书,人民邮电出版社) —— 实战导向,面试前巩固工程手感
- 《Go 语言编程之旅:一起用 Go 做项目》(博文视点,电子工业出版社) —— 项目驱动入门,从零写出完整应用
- Keychron K1Max 矮轴机械键盘(Mac/Win 双系统,QMK/VIA 开源改键) —— 轻薄矮轴 + 开源固件,程序员桌面常客
- 罗技 MX Master 3S 无线鼠标(Flow 跨屏,静音电磁滚轮) —— 人体工学设计,写代码一整天手不酸
以上链接含京东联盟推广代码;通过链接购买本站可能获得少量佣金,不影响你的购买价格。