将Go结构数据嵌入二进制文件中

时间:2018-02-24 16:29:56

标签: go

我的Go程序可以使用几百条元数据记录。我希望将数据编译成二进制文件,以便它能正常工作,避免依赖其他文件来运行。

元数据以csv开头,我有另一个包将csv处理成结构。主程序通过导入该包来使用这些结构。 csv只是偶尔会改变。

我学习了如何将结构导入和导出为gobs,但我需要将这些gob存储在文件(等)中并在运行时加载它们。

我看过制作共享库,但那些是ELF格式的,似乎并不支持我需要的原生Go结构。

我可以让csv-processing包从字面上打印出代码来重新创建这些结构实例(用一个base64编码的gob),用主程序构建,但这似乎是一个非常迂回的方式走吧。

有没有一种简单的方法可以将这个准备好的结构数据嵌入到我的二进制文件中?

1 个答案:

答案 0 :(得分:0)

有一些软件包可以将资源(二进制文件)嵌入到您的应用程序中。

我使用以下内容:

  • 我选择go-resources用于制作。它生成包含您的数据的源代码文件,以十六进制编码;
  • 另一个有用的包:go.rice - 真正将您的数据作为资源嵌入到可执行文件中。但我在跨平台建设方面遇到了一些问题;

我找到了执行相同任务的软件包,但我没有在生产中使用它: