-
Notifications
You must be signed in to change notification settings - Fork 0
/
make.sh
157 lines (149 loc) · 9.08 KB
/
make.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/bash
# 定义基础目录
base_dir="go-learning"
# 创建基础目录
mkdir -p "$base_dir"
# 创建README.md和.gitignore文件
touch "$base_dir/README.md"
touch "$base_dir/.gitignore"
# 定义学习计划及知识内容的目录结构和索引关键词
topics=(
"01_基础之变量和常量 变量 常量"
"02_基础之基本数据类型 基本数据类型"
"03_基础之运算符 运算符"
"04_基础之流程控制 流程控制"
"05_基础之数组 数组"
"06_基础之切片 切片"
"07_基础之map map"
"08_基础之函数/函数部分 函数"
"09_基础之函数/匿名函数和闭包部分 匿名函数 闭包"
"10_基础之指针 指针"
"11_基础之结构体/01_自定义类型和类型别名 结构体 自定义类型 类型别名"
"11_基础之结构体/02_结构体定义与实例化 结构体 实例化"
"11_基础之结构体/03_方法和接收者 方法 接收者"
"11_基础之结构体/04_结构体嵌套 结构体 嵌套"
"11_基础之结构体/05_结构体字段可见性和JSON 可见性 JSON"
"11_基础之结构体/06_学员信息管理系统练习 学员信息 管理系统 练习"
"12_基础之包 包"
"13_基础之接口 接口"
"14_基础之error接口 error 接口"
"15_基础之反射/01_反射初识 反射"
"15_基础之反射/02_结构体反射 结构体反射"
"16_基础之并发/01_goroutine 并发 goroutine"
"16_基础之并发/02_channel 并发 channel"
"16_基础之并发/03_并发同步和锁 并发 同步 锁"
"17_基础之处理并发错误 并发 错误"
"18_基础之网络编程 网络编程"
"19_基础之单元测试 单元测试"
"20_泛型 泛型"
"21_何时使用泛型 何时使用 泛型"
"22_常用标准库/01_fmt与格式化占位符 fmt 格式化占位符"
"22_常用标准库/02_time time"
"22_常用标准库/03_flag flag"
"22_常用标准库/04_log log"
"22_常用标准库/05_文件操作 文件操作"
"22_常用标准库/06_strconv strconv"
"22_常用标准库/07_net_http net/http"
"22_常用标准库/08_context context"
"23_单元测试教程/01_单元测试基础 单元测试"
"23_单元测试教程/02_网络测试 网络测试"
"23_单元测试教程/03_MySQL和Redis测试 MySQL Redis 测试"
"23_单元测试教程/04_mock接口测试 mock 接口 测试"
"23_单元测试教程/05_monkey打桩测试 monkey 打桩 测试"
"23_单元测试教程/06_goconvey的使用 goconvey 使用"
"23_单元测试教程/07_编写可测试的代码 可测试 代码"
"24_数据库相关/01_Go操作MySQL——database_sql使用指南 MySQL database/sql 使用指南"
"24_数据库相关/02_更强大、更好用的sqlx库使用指南 sqlx 库 使用指南"
"24_数据库相关/03_sqlx库批量插入数据 sqlx 批量插入 数据"
"24_数据库相关/04_Go操作Redis——go-redis库使用指南 Redis go-redis 使用指南"
"24_数据库相关/05_Go操作MongoDB MongoDB"
"24_数据库相关/06_Canal介绍和使用指南 Canal 使用指南"
"25_Web开发相关/01_template template"
"25_Web开发相关/02_01——template模板初识 template 模板"
"25_Web开发相关/02_02——模板语法详解 模板 语法详解"
"25_Web开发相关/02_03——模板嵌套 模板 嵌套"
"25_Web开发相关/02_04——模板继承 模板 继承"
"25_Web开发相关/02_05——模板补充 模板 补充"
"25_Web开发相关/03_gin框架快速指南 gin 框架 快速指南"
"25_Web开发相关/03_gin框架web实战视频教程 gin 框架 web 实战 视频 教程"
"25_Web开发相关/03_gin框架路由拆分与注册 gin 框架 路由 拆分 注册"
"25_Web开发相关/04_在gin框架中使用JWT认证 gin 框架 JWT 认证"
"25_Web开发相关/05_使用Air实现Go程序实时热重载 Air Go 实时热重载"
"25_Web开发相关/06_优雅的关机或重启gin项目 优雅 关机 重启 gin 项目"
"25_Web开发相关/07_如何使用docker部署Go Web程序 docker 部署 Go Web 程序"
"25_Web开发相关/08_Cookie和Session Cookie Session"
"25_Web开发相关/09_gin框架中使用zap日志库 gin 框架 zap 日志库"
"25_Web开发相关/10_gin框架源码解析 gin 框架 源码 解析"
"25_Web开发相关/11_gin框架中使用validator若干实用技巧 gin 框架 validator 实用 技巧"
"25_Web开发相关/12_使用swagger生成接口文档 swagger 接口文档"
"25_Web开发相关/13_HTTP Server常用压测工具介绍 HTTP Server 压测 工具"
"25_Web开发相关/14_漏桶和令牌桶限流策略介绍及使用 漏桶 令牌桶 限流 策略"
"25_Web开发相关/15_部署Go语言程序的N种方法 部署 Go 语言 程序 方法"
"26_微服务相关/01_RPC的原理与Go RPC RPC 原理 Go RPC"
"26_微服务相关/02_protobuf v3语法中文指南 protobuf v3 语法 中文指南"
"26_微服务相关/03_Go语言protobuf使用指南 Go protobuf 使用指南"
"26_微服务相关/04_protobuf中oneof、WrapValue和FieldMask的使用 protobuf oneof WrapValue FieldMask 使用"
"26_微服务相关/05_gRPC教程 gRPC 教程"
"26_微服务相关/06_gRPC中的名称解析和负载均衡 gRPC 名称解析 负载均衡"
"26_微服务相关/07_gRPC-Gateway教程 gRPC-Gateway 教程"
"26_微服务相关/08_gRPC-Transcoding gRPC-Transcoding"
"26_微服务相关/09_consul服务注册与发现 consul 服务注册 发现"
"26_微服务相关/10_Apollo配置中心 Apollo 配置中心"
"27_Go-kit/01_Go-kit教程01——基础示例 Go-kit 基础示例"
"27_Go-kit/02_Go-kit教程02——gRPC Go-kit gRPC"
"27_Go-kit/03_Go-kit教程03——项目目录结构 Go-kit 项目 目录结构"
"27_Go-kit/04_Go-kit教程04——中间件 Go-kit 中间件"
"27_Go-kit/05_Go-kit教程05——调用其他服务 Go-kit 调用 其他服务"
"27_Go-kit/06_Go-kit教程06——服务发现与负载均衡 Go-kit 服务发现 负载均衡"
"28_常用组件和技巧/01_你需要知道的那些go语言json技巧 go 语言 json 技巧"
"28_常用组件和技巧/02_option选项模式 option 选项 模式"
"28_常用组件和技巧/03_Go语言中的单例模式(翻译) Go 单例模式"
"28_常用组件和技巧/04_结构体转map的若干方法 结构体 转map 方法"
"28_常用组件和技巧/05_Go语言配置管理神器——Viper中文教程 Go 配置管理 Viper 中文教程"
"28_常用组件和技巧/06_Go操作NSQ Go NSQ"
"28_常用组件和技巧/07_Go操作kafka之sarama Go kafka sarama"
"28_常用组件和技巧/08_Go操作Kafka之kafka-go Go Kafka kafka-go"
"28_常用组件和技巧/09_Go操作etcd Go etcd"
"28_常用组件和技巧/10_Go语言获取系统性能数据gopsutil库 Go gopsutil 库"
"28_常用组件和技巧/11_二进制协议gob及msgpack介绍 二进制协议 gob msgpack 介绍"
"28_常用组件和技巧/12_influxDB influxDB"
"28_常用组件和技巧/13_Elasticsearch简明指南 Elasticsearch 简明指南"
"28_常用组件和技巧/14_go-elasticsearch使用指南 go-elasticsearch 使用指南"
"28_常用组件和技巧/15_Go第三方日志库logrus Go 第三方 日志库 logrus"
"28_常用组件和技巧/16_Go语言项目中使用zap日志库(翻译) Go 语言 zap 日志库"
"28_常用组件和技巧/17_Go pprof性能调优 Go pprof 性能调优"
"28_常用组件和技巧/18_为Go项目编写Makefile Go Makefile"
"28_常用组件和技巧/19_在select语句中实现优先级 select 语句 优先级"
"28_常用组件和技巧/20_在关于切片操作的技巧(翻译) 切片 操作 技巧"
"28_常用组件和技巧/21_Go语言结构体的内存布局 Go 结构体 内存布局"
"28_常用组件和技巧/22_基于游标的分页 游标 分页"
"28_常用组件和技巧/23_singleflight singleflight"
"28_常用组件和技巧/24_依赖注入工具-wire 依赖注入 wire"
"28_常用组件和技巧/25_更友好的并发库-conc 并发 conc"
"29_GORM教程/01_GORM入门指南→B站GORM视频教程 GORM B站 视频 教程"
"29_GORM教程/02_GORM CRUD操作指南 GORM CRUD 操作"
"29_GORM教程/03_GORM Gen使用指南 GORM Gen 使用指南"
)
# 创建目录结构
for topic in "${topics[@]}"; do
dir=$(echo "$topic" | cut -d' ' -f1)
title=$(echo "$topic" | cut -d' ' -f2-)
mkdir -p "$base_dir/$dir"
echo -e "# $title\n" > "$base_dir/$dir/README.md"
done
# 在README.md文件中添加索引
echo -e "# Golang学习笔记\n" > "$base_dir/README.md"
for topic in "${topics[@]}"; do
dir=$(echo "$topic" | cut -d' ' -f1)
title=$(echo "$topic" | cut -d' ' -f2-)
echo -e "## $title\n" >> "$base_dir/README.md"
echo -e "| 子目录 | 描述 |" >> "$base_dir/README.md"
echo -e "|--------|------|" >> "$base_dir/README.md"
for subtopic in $(ls -d "$base_dir/$dir"/*); do
subdir=$(basename "$subtopic")
desc=$(grep -oP '(?<=^# ).*' "$subtopic/README.md" | head -n 1)
echo -e "| [$subdir](./$dir/$subdir) | $desc |" >> "$base_dir/README.md"
done
echo -e "" >> "$base_dir/README.md"
done
echo "README.md 文件已生成。"