Skip to content

Latest commit

 

History

History
102 lines (82 loc) · 2.36 KB

File metadata and controls

102 lines (82 loc) · 2.36 KB

C++ 到 Go 迁移总结

项目状态

✅ Go 版本核心功能已完成,与 C++ 版本功能对等

目录结构对比

C++ 版本

include/rqdata/          # 头文件
src/                     # 源文件
build/                   # CMake 构建
thirdparty/vendor/       # 第三方库

Go 版本

cmd/                     # CLI 命令
internal/
  ├── auth/             # 认证模块
  ├── client/           # HTTP 客户端
  ├── converter/        # 数据转换
  ├── loader/           # 命令加载器
  └── validator/        # 参数验证
main.go                  # 入口
go.mod                   # 依赖管理

模块对应关系

C++ 模块 Go 模块 状态
auth.cpp/h internal/auth/ ✅ 完成
data_client.cpp/h internal/client/ ✅ 完成
converter.cpp/h internal/converter/ ✅ 完成
validation.cpp/h internal/validator/ ✅ 完成
command_loader.cpp/h internal/loader/ ✅ 完成
main.cpp main.go + cmd/ ✅ 完成

依赖对比

C++ 依赖

  • libcurl (HTTP 客户端)
  • nlohmann_json (JSON 解析)
  • CLI11 (命令行解析)
  • fmt (格式化)
  • csv-parser (CSV 解析)

Go 依赖

  • net/http (标准库,HTTP 客户端)
  • encoding/json (标准库,JSON)
  • encoding/csv (标准库,CSV)
  • github.com/spf13/cobra (CLI)
  • github.com/zalando/go-keyring (密钥环)
  • golang.org/x/term (终端输入)

核心优势

1. 单文件分发

  • C++: 需要静态链接 libcurl,Windows 需要 vcpkg
  • Go: 原生静态编译,无需任何配置

2. 编译速度

  • C++: CMake + Make,首次编译较慢
  • Go: 秒级编译,增量编译极快

3. 跨平台构建

  • C++: 需要各平台工具链和依赖
  • Go: 单命令交叉编译所有平台

4. 代码量

  • C++: ~3000 行(含头文件)
  • Go: ~1500 行(更简洁)

构建命令对比

C++ 构建

mkdir build && cd build
cmake ..
make -j4

Go 构建

go build -o rqdata main.go

Go 跨平台构建

GOOS=linux go build -o rqdata-linux
GOOS=darwin go build -o rqdata-macos
GOOS=windows go build -o rqdata.exe

下一步

  1. 安装 Go 1.21+
  2. 运行 go mod tidy 下载依赖
  3. 运行 go build 编译
  4. 测试基本功能(auth, schema list)
  5. 运行完整测试套件验证兼容性