将 Golang 代码自动转换成 c/c++ 的方案选型

更新日期: 2023-08-30 阅读次数: 1181 字数: 547 分类: golang

需求来源

因为最近一直在写 Android 蓝牙相关的 App,但是我发现 Kotlin 这门语言来操作字节流很不方便。 比如 CRC/BCC 校验,双字节转换 int16 都不方便。 而且之前还有微信小程序的蓝牙处理逻辑用 js 写的,连 js 都比 kotlin 操作字节流方便。但是也很麻烦。 远不如 c/c++ 代码直观。再就是我还有一套蓝牙网关直连服务器 golang 服务端的一套代码。

需要同时维护三套不同语言的代码,实现同一个逻辑,维护成本很高,而且没有意义。kotlin 和 js 这两个语言实在没有深究的兴趣。

难之表情

于是我想,是否可以把蓝牙数据包的逻辑改用 c/c++ 编写,然后

  • c++ -> wasm 跑在网页/小程序。还能避免 js 代码被剽窃
  • c++ -> jni 跑在 android / windows

如果能解决 golang 到 c++ 的转换, 这样就能解决三端,用同一门语言 golang 编写。

golang 的优势

相对 python / js 而言,golang 有类型的概念,而且代码有统一格式规范,非常适合解析。 且 golang 的语法及内置数据类型,结构体,跟 C 很像,转换起来也更简单。

方案一

https://www.codeconvert.ai/golang-to-c++-converter

这是一个在线的转换工具,效果如下

golang 转换为 cpp

但是这个在线工具有免费限额。

方案二

https://github.com/xyproto/go2cpp

这是一个开源的实现,从代码看,就是通过 golang 将 go 源文件逐行解析,转换为了 cpp 的代码。

go2cpp 开源

这样就非常靠谱了,而且即便遇到问题也能自己解决。

我的使用场景也简单,只需要将简单的函数转换即可,都不需要将整个项目转换,所以看上去是非常可行的一个方案。

方案三

在 ChatGPT 这么成熟的时代,用 AI 做代码转换应该很靠谱了,但是保险起见用第二套方案更稳妥一些。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式