cmd/goweb3/main.go 主程序说明

一、程序概述

main.go 是 goweb3 命令行工具的入口文件,是一个基于 Go 语言开发的 Web3 后端脚手架工具,提供代码生成、依赖管理、服务启动等一站式开发能力。


二、核心结构


go

func main() {
    // 1. 启动性能分析服务
    go func() {
        http.ListenAndServe("localhost:6060", nil)
    }()
    // 2. 初始化配置文件(如果不存在)
    webfile.FindBeanWebFileService().IniConfigIfNotExist()
    // 3. 执行命令菜单
    menu.Execute()
}

三、三大核心模块

模块 作用 关键函数
pprof 性能分析服务,监听 localhost:6060 http.ListenAndServe()
webfile 配置文件初始化与文件复制服务 IniConfigIfNotExist()
menu 命令行菜单系统,管理所有子命令 Execute()

四、命令菜单体系

通过 menu.go 注册的命令结构如下:


plainText

root
├── all          (allcmd)      - 所有编码命令
├── code-es/code-db            - ES/DB代码生成
├── meta2es/meta2db            - 元数据同步
├── list         (listcmd)     - 显示配置信息、服务信息、文件路径
├── stat         (statcmd)     - 性能统计
├── godi         (godicmd)     - 依赖注入
├── cv           (checkgvcmd)  - 检查版本冲突
├── cc           (cccmd)       - 检查代码圈复杂度
├── nats         (natscmd)     - NATS消息服务
├── rpc          (gorpccmd)    - GoRPC服务
├── gtag         (gitcmd)      - Git标签版本管理
├── inst         (instcmd)     - 一键生成工程
└── i            (instcmd)     - 一键安装子项

五、WebFileService 核心功能

WebFileService 负责模板文件的复制和配置管理:

方法 功能
CopyWeb2Sample() 复制 Web 示例代码到项目
CopyDomain2Sample() 复制领域层代码
CopyData2Sample() 复制数据访问层代码
CopyConfigIfNotExist() 如果配置不存在则复制
ReplaceYmlFactryPkg() 替换 YML 配置中的包名
ChangePkg() 批量替换 Go 文件中的包路径

六、执行流程


plainText

启动程序
    ↓
启动 pprof 服务 (goroutine)
    ↓
检查并初始化配置文件
    ↓
解析命令行参数
    ↓
执行对应子命令
    ↓
退出

七、技术要点

  1. pprof 集成:通过 net/http/pprof 包在 localhost:6060 提供性能分析端点
  2. 单例模式FindBeanWebFileService() 使用工厂模式获取单例服务实例
  3. 命令行框架:基于自定义的 menufactroy 实现命令注册和执行
  4. 配置管理:自动检测并复制模板配置文件,支持包路径替换

八、使用方式


bash

# 查看所有命令
goweb3

# 生成 ES 代码
goweb3 code-es

# 一键初始化工程
goweb3 inst

# 查看配置信息
goweb3 list

goinstall.bat

goweb3 -h

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐