我想将数据文件 (~1MB) 打包到 golang 应用程序,然后在 os.exec
中使用该数据。该应用程序在 Linux 上运行。
如何在应用程序中定义数据,作为string
或[]byte
、变量或Const?
应该在全局范围内定义,还是包装在 func
中?
如何将应用程序内存中的数据传递给已执行进程?
最佳答案
要将数据文件构建到您的程序中,您有多种选择。你是正确的,因为你可以手动将数据文件复制/粘贴到程序中作为类型 string
,[]byte
作为变量,但还有其他包/applications for go 已经为您处理了这个问题,它还可以最大限度地减少应用程序的内存占用。想到的一个例子是 go-bindata
( link to repo ),它就是这样做的。
至于在 os/exec
中使用文件,我假设您正在尝试使用文件路径或原始字符串将整个文件传递给程序。对于文件路径,您必须先将整个文件写入磁盘。如果您尝试将整个文件内容作为原始字符串传递,您仍然可以使用 go-bindata
或数据文件的 string
作为 arg
在 os/exec.Command
中。
附言- go-bindata
已经有一段时间没有看到更新了,所以如果您在使用它时遇到问题,我鼓励您寻找更活跃的分支或替代品。
关于linux - 将数据文件包装到 golang 应用程序并在 exec 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734450/