Go:在二进制文件中嵌入静态文件

2024-04-13

这可能是一个非常业余的问题。我正在尝试将静态文件嵌入到二进制文件中,即。 html。我该怎么做https://github.com/jteeuwen/go-bindata https://github.com/jteeuwen/go-bindata?

所以我可以用这个访问资产https://github.com/jteeuwen/go-bindata#accessing-an-asset https://github.com/jteeuwen/go-bindata#accessing-an-asset,但是我该如何处理“数据”,以及如何解析文件、执行模板并在目录中提供它们?

我在网上找不到任何示例,希望得到一些帮助!


5/6 年后,Go 1.16(2021 年第一季度)应该会更容易,它增加了对嵌入式文件的支持(问题/提案 41191 https://github.com/golang/go/issues/41191 )

将被允许​​使用//go:embed命名单个文件以初始化普通文件string or []byte多变的:

//go:embed gopher.png
var gopherPNG []byte

需要导入才能将文件标记为包含//go:embed线和需要处理。
Goimports (and gopls等)可以学习此规则并自动在任何文件中添加导入//go:embed如所须。

这引发了一场争论问题 42328 https://github.com/golang/go/issues/42328关于如何避免在使用时意外包含“隐藏”文件//go:embed

这已解决CL 275092 https://go-review.googlesource.com/c/go/+/275092/ and 提交 37588ff https://github.com/golang/go/commit/37588ffcb221c12c12882b591a16243ae2799fd1

决定排除文件匹配.* and _*嵌入整个目录树时的嵌入目录结果。

See src/embed/internal/embedtest/embed_test.go https://github.com/golang/go/blob/37588ffcb221c12c12882b591a16243ae2799fd1/src/embed/internal/embedtest/embed_test.go

    //go:embed testdata/k*.txt
    var local embed.FS
    testFiles(t, local, "testdata/ken.txt", "If a program is too slow, it must have a loop.\n")

    //go:embed testdata/k*.txt
    var s string
    testString(t, s, "local variable s", "If a program is too slow, it must have a loop.\n")

    //go:embed testdata/h*.txt
    var b []byte
    testString(t, string(b), "local variable b", "hello, world\n")

注:与CL 281492 https://go-review.googlesource.com/c/go/+/281492/, cmd/go passes embedcfg to gccgo如果支持的话。


另请参阅(2021 年 1 月)问题 43854 https://github.com/golang/go/issues/43854“选择加入//go:embed to not忽略文件和空目录”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go:在二进制文件中嵌入静态文件 的相关文章

  • 如何将所有GET请求查询参数放入Go中的结构体中?

    你好 我想将 get 查询参数转换为 Go 中的结构 例如我有这样的结构 type Filter struct Offset int64 json offset Limit int64 json limit SortBy string js
  • golang.org 包和标准库之间的区别

    我使用 go 已经有一段时间了 我注意到 Go 标准库 和 golang org x 之间存在重复的包 我的问题是 为什么它们被释放两次 在这两者中 我应该使用哪一个 更新的 规范的等 到目前为止我注意到的一些示例包已发布两次 golang
  • 将产生 goroutine 的 golang 方法

    据我所知 如果 goroutine 太忙 它们会阻止其他 goroutine 运行 对我来说 这意味着我的应用程序的性能和响应能力可能取决于我知道哪些库方法将控制其他 goroutine 例如通常是 Read 和 Write 有什么方法可以
  • 有没有办法从另一个包访问结构体的私有字段?

    我在一个包中有一个具有私有字段的结构 package foo type Foo struct x int y Foo 另一个包 例如 白盒测试包 需要访问它们 package bar import foo func change foo f
  • 我们如何在 Go 中使用通道来代替互斥锁?

    通道将通信 值的交换 与同步相结合 保证两个计算 goroutine 处于已知状态 如何使用 Google Go 中的通道来执行互斥量的功能 package main import sync var global int 0 var m s
  • Golang const unsafe.Sizeof

    不明白为什么我可以做到 const OK uint64 0 const OK int unsafe Sizeof uint64 0 但不是这个 const NOK binary Size uint64 0 它的解释在规格 https gol
  • 如何将长 Go 模板函数拆分为多行?

    我有一个很长的printf调用 Go 模板 例子 printf mongodb s s s s authSource admin replicaSet s readPreference nearest w majority Values r
  • 如何通过在切片上查找来从切片复制到数组

    我正在编写一个库来处理二进制格式 我有一个带有数组变量的结构 我想保留它以用于文档目的 我还需要从输入字节片中查找和判断 一些伪代码 type foo struct boo 5 byte coo 3 byte func main input
  • 所有可能的 GOOS 价值?

    如果我做对了 GOOS在编译源代码时确定 为了更好地支持多个操作系统 我感兴趣的是GOOS可能 当然 Go 是开源的 所以它可能有无限的可能性 所以我真正想要的是一个 通用列表 已知值为 windows linux darwin or fr
  • Golang:如何在HTTP客户端的TLS配置中指定证书

    我有一个证书文件 该位置是 usr abc my crt我想将该证书用于我的 tls 配置 以便我的 http 客户端在与其他服务器通信时使用该证书 我当前的代码如下 mTLSConfig tls Config CipherSuites u
  • 重新设计循环依赖缺陷

    我有一堆小服务 它们共享一些常见的包 例如Logger Configuration and Net 我在单独的项目中编写了每个包 问题是我的Logger需求包Configuration用于设置 和我的Configuration not仅由L
  • 仅导出嵌入结构实现的方法子集

    是否可以仅导出嵌入结构实现的方法的子集 这是一种与减少代码复制和粘贴非常不同的方法吗 还有更惯用的方法吗 type A struct func a A Hello fmt Println Hello func a A World fmt P
  • Go的堆接口实现的优先级队列的大小限制

    在Java中 有一个具有大小属性 的PriorityQueue 我在这里也期待同样的事情 如果我没记错的话 用例 一一读取数百万数据并将其发送到优先级队列 我只想要前 5 个计算元素 因此我只想要大小为 5 的堆 优先级队列 我正在尝试使用
  • golang 中 *(*int)(nil) = 0 是什么意思?

    我注意到有一行 int nil 0在功能上throw https github com golang go blob master src runtime panic go L1113 go nosplit func throw s str
  • 在 Go 中解析多个 JSON 对象

    可以使用以下方法轻松解析如下对象encoding json包裹 something foo something else bar 我面临的问题是当服务器返回多个字典时 如下所示 something foo something else ba
  • 如何覆盖 go 模块中的依赖项?

    In dep您可以选择覆盖依赖项并使其指向不同的存储库 例如以下内容https github com kubermatic glog logrus https github com kubermatic glog logrus库一需要将以下
  • Golang:从文本文件中替换字符串中的换行符时出现问题

    我一直在尝试读取一个文件 然后将读取的材料放入字符串中 然后字符串将按行分割成多个字符串 absPath filepath Abs Go input txt data err ioutil ReadFile absPath if err n
  • golang中默认的HTTP拨号超时值

    我正在运行 golang http 客户端来对服务器进行压力测试 有时我会收到错误 拨号 tcp 161 170 xx xxx 80 操作超时 错误 我认为这是 HTTP 客户端超时 我正在考虑增加超时值https stackoverflo
  • GO中的优先级队列

    谁能向我解释一下 我想在GO中实现一个优先级队列 接口实现来自link https golang org pkg container heap example priorityQueue 但优先级最低 我的代码 pq make Priori
  • 无法从另一个标签的源代码构建和安装 go

    我正在尝试使用此从源代码构建和安装 go文档 https go dev doc install source 当我喜欢以下内容时 这效果很好 git clone https go googlesource com go goroot cd

随机推荐

  • 如何从多个类继承

    假设我有一个狮鹫对象 它需要成为猫科动物和鸟类类别的一部分 我该怎么做 我一次只能让它继承 1 个类 这可能会有所帮助 多重继承 不存在天生的多重继承 当然有些人认为这是一个好处 为了解决这个问题 你可以创建一个复合类 即一个类的实例变量是
  • 将窗口对象传递到 Javascript 命名空间

    我试图更好地理解 javascript 中的命名空间 并找到了一个 javascript 立即调用函数表达式的示例 该表达式将窗口对象作为参数 这是其中的代码 var CG CG CG main function window var FO
  • ReSharper 10 测试运行程序无法找到从外部文件引用的 AppSettings

    我最近升级到 Visual Studio 2013 的 ReSharper 10 0 1 我的单元测试项目包含一个 app config 文件 其中包含以下内容
  • Bootstrap 4:响应式图片+裁剪?

    我目前正在尝试从头开始学习 Bootstrap 4 到目前为止 我已经能够很好地处理其有限的文档 我把初始项目放在这里 http codepen io kriszap pen GWWvLW http codepen io kriszap p
  • Spark 向 S3 写入/读取 - 分区大小和压缩

    我正在做一个实验来了解哪种文件大小对于 s3 和 EMR Spark 表现最好 输入数据 Incompressible data Random Bytes in files Total Data Size 20GB Each folder
  • Linux 上的视频捕获? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们需要捕捉实时视频并显示easily在 Linux 上 我们需要一个具有简单 API 的廉价卡或 USB 设备 有人想分享一些经验吗 Use the
  • 如何创建卷页动画?

    有什么办法可以模拟这样的事情吗 没有一个 API 可以执行 半页卷曲 之类的操作吗 controller modalTransitionStyle UIModalTransitionStylePartialCurl self present
  • 使用 jQuery 确定复选框是否已选中[重复]

    这个问题在这里已经有答案了 可能的重复 使用 jQuery 检查复选框选中属性 https stackoverflow com questions 901712 check checkbox checked property using j
  • 如何为此 Firebase Android 项目添加“大文本”或“收件箱样式”通知?

    我正在尝试从 Firebase 控制台发送推送通知 目前我可以从 Firebase 控制台向我的虚拟设备发送消息 但如果消息很长 则不会完全显示在通知栏中 这是 Firebasemessagingservice 的代码 import and
  • 无法更新本地预定通知内容

    在一次 WWDC 会议中 我获得了用于更新现有通知的代码片段 我认为这不起作用 正在尝试更新通知内容 首先 我请求待处理的通知UNUserNotificationCenter这总是有效的 然后 我创建新请求以使用现有唯一标识符更新通知 有
  • 如何摆脱警告 .ts 文件是 TypeScript 编译的一部分,但未使用

    我刚刚将角度更新到最新9 0 0 next 4 我没有使用路由 但更新后突然我不断看到此警告 如何删除此警告 警告src war angular src app app routing module ts是其一部分 TypeScript 编
  • 如何制作单一实例表单(而不是申请表)?

    在我的 C 应用程序中 我有一个可以从菜单命令打开的选项对话框 我想确保选项对话框只有一个实例 用户无法在给定时间打开多个选项窗口 而不使其成为模式 此外 如果用户已经打开了此窗口 并且他单击菜单项再次打开它 则应用程序只会使已经可见的表单
  • 什么时候应该调用 glGetError?

    glLoadIdentity http www opengl org sdk docs man xhtml glLoadIdentity xml says GL INVALID OPERATION如果生成glLoadIdentity之间执行
  • Visual Studio 代码覆盖率未显示所有程序集

    我的 SLN 文件中有 20 个项目 我正在通过测试资源管理器运行单元测试并生成代码覆盖率 只有八个项目出现在报道中 见屏幕截图 我正在使用一个 runsettings 文件 其中注释掉了所有 标记的内容 如下所示
  • 忽略空格的查询

    运行查询以便字段中的空格是最好的方法是什么 被忽视 例如 以下查询 SELECT FROM mytable WHERE username JohnBobJones SELECT FROM mytable WHERE username Joh
  • 查找 GIT 中具有特定单词/行的最新提交

    如果我有一个包含最新提交的文件 如下所示 class A String name Mary 在特定的提交中 String name Mary 被更改为String name Bob 问题是 这一行已经被修改了几次 有一次是 John 另一个
  • 上传数据到Meteor/Mongodb

    我有一个 Meteor 应用程序 想将数据 从 csv 上传到流星集合 我已经发现 解决方案 例如集合fs https github com CollectionFS Meteor CollectionFS 处理文件上传 方法用于直接上传
  • 如何在 Windows Azure 上部署 Java 应用程序

    您好 我是一名计算机科学专业三年级学生 我已经在 netbeans 上用 java 创建了一个三年级项目 现在我想将其部署到带有 windows azure 的虚拟机上 重点是 我希望能够在任何连接到互联网的计算机上使用这个应用程序 只需访
  • 单链打印C++

    我正在尝试以 1 2 3 4 etc 格式选择我的链 您可以在下面找到头文件 其中包含节点的布局 我只是对如何循环浏览列表以打印项目感到困惑 任何指导将不胜感激 set h using namespace std include
  • Go:在二进制文件中嵌入静态文件

    这可能是一个非常业余的问题 我正在尝试将静态文件嵌入到二进制文件中 即 html 我该怎么做https github com jteeuwen go bindata https github com jteeuwen go bindata