我可以在浏览器中运行 Go 编译器吗?



我最近发现Go可以编译到WebAssembly。凉!

根据这个 Go 文档,Go 工具链本身是用 Go 编写的。

这让我想到,Go 编译器可以在浏览器中运行吗?我可以制作一个通过上传按钮给出文件路径的网站(虽然,没有上传任何东西(,可以编译一个 Go 项目并将可执行文件作为"下载"返回吗?

我正在寻找的最终结果是保存到磁盘的可执行文件,而不是在浏览器中运行的 Go 代码,但只要这是最终结果,我就不需要遵循上面的确切场景。

如果这是可能的,有什么限制(如果有的话(?

我看过的其他资源:

  1. GitHub 上 Go to WASM 的编译器
  2. 有人在处理输入的 Go 代码在浏览器中运行的游戏

编辑:我已经开始基于一个类似的项目进行这项工作。存储库可以在这里找到:https://github.com/TR-SLimey/IBGC

这是可能的,但很难做到。

您无法使用 WebAssembly 访问文件。相反,您需要用户在网页内放置一个文件夹,并使用文件和目录条目 API 获取文件及其内容。

但真正的问题是将文件从JS传递到WASM,反之亦然。您还需要在编译器源代码中替换对 Go 标准库的所有调用,这些调用将访问对 JS 函数的调用的文件。这些函数需要直接访问 WASM 内存。您将需要对编译器进行大量修改。

若要下载二进制文件,可以创建一个Blob,使用URL.createObjectURL()获取该 blob 的 URL,创建一个具有.download = true.href = <the blob URL><a>元素,然后.click()它。

性能可能比直接运行 Go 编译器差,但除此之外,它应该可以正常工作。

相关内容

  • 没有找到相关文章

最新更新