Gin 框架官方文档 01:创建简单的 Gin 应用程序
最编程
2024-10-15 06:57:56
...
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// 定义文件夹名称
folderNames := []string{
"开始", "AsciiJSON", "HTML渲染", "HTTP2server推送", "JSONP",
"Multipart_Urlencoded绑定", "Multipart_Urlencoded表单", "PureJSON", "Query和post_form",
"SecureJSON", "XML_JSON_YAML_ProtoBuf渲染", "安全页眉", "绑定HTML复选框", "绑定Uri",
"绑定表单数据至自定义结构体", "绑定查询字符串或表单数据", "不使用默认的中间件",
"查询字符串参数", "从reader读取数据", "定义路由日志的格式", "多模板",
"将request_body绑定到不同的结构体中", "静态文件服务", "静态资源嵌入",
"控制日志输出颜色", "路由参数", "路由组", "模型绑定和验证", "如何记录日志",
"上传文件", "设置和获取Cookie", "使用BasicAuth中间件", "使用HTTP方法",
"使用中间件", "映射查询字符串或表单参数", "优雅地重启或停止", "运行多个服务",
"在中间件中使用Goroutine", "支持Let'sEncrypt", "只绑定url查询字符串",
"重定向", "自定义HTTP配置", "自定义日志文件", "自定义验证器", "自定义中间件", "测试",
}
// 创建文件夹并初始化 Go 模块
for i, name := range folderNames {
// 生成文件夹名称
folderName := fmt.Sprintf("%02d%s", i+1, name)
// 创建文件夹
err := os.Mkdir(folderName, os.ModePerm)
if err != nil {
fmt.Printf("创建文件夹 %s 失败: %v\n", folderName, err)
continue
}
// 切换到新创建的文件夹
err = os.Chdir(folderName)
if err != nil {
fmt.Printf("切换到文件夹 %s 失败: %v\n", folderName, err)
continue
}
// 初始化 Go 模块,模块名仅为序号
modName := fmt.Sprintf("%02d", i+1)
cmd := exec.Command("go", "mod", "init", modName)
if err := cmd.Run(); err != nil {
fmt.Printf("初始化模块 %s 失败: %v\n", modName, err)
} else {
fmt.Printf("成功创建文件夹 %s 并初始化模块 %s\n", folderName, modName)
}
// 切换回原始目录
os.Chdir("..")
}
// 初始化工作区并添加所有项目
cmd := exec.Command("go", "work", "init")
out, err := cmd.CombinedOutput() // 捕获输出
if err != nil {
fmt.Printf("初始化工作区失败: %v\n输出: %s\n", err, out)
return
}
// 添加所有项目到工作区
for i := range folderNames {
folderName := fmt.Sprintf("%02d%s", i+1, folderNames[i])
cmd = exec.Command("go", "work", "use", folderName)
if err := cmd.Run(); err != nil {
fmt.Printf("添加 %s 到工作区失败: %v\n", folderName, err)
} else {
fmt.Printf("成功将 %s 添加到工作区\n", folderName)
}
}
}