go-bindata

devtools/2024/11/18 0:01:50/

go bindata

在项目中引用了静态资源时,项目打包后,需要保证包与静态资源的相对目录不变。bindata可以将静态资源生成.go文件,在打包时会嵌入到包中,非常好用。

安装

需要让bindata下载到GOPATH/bin目录下,在项目外执行命令:

go install github.com/jteeuwen/go-bindata/...@master

生成

go bindata支持以下参数

PS D:\go_workspace\src\test> go-bindata
Missing <input dir>Usage: D:\g\versions\1.22.8\bin\go-bindata.exe [options] <input directories>-debugDo not embed the assets, but provide the embedding API. Contents will still be loaded from disk.-devSimilar to debug, but does not emit absolute paths. Expects a rootDir variable to already exist in the generated code's package.-ignore valueRegex pattern to ignore-mode uintOptional file mode override for all files.-modtime intOptional modification unix timestamp override for all files.-nocompressAssets will *not* be GZIP compressed when this flag is specified.-nomemcopyUse a .rodata hack to get rid of unnecessary memcopies. Refer to the documentation to see what implications this carries.-nometadataAssets will not preserve size, mode, and modtime info.-o stringOptional name of the output file to be generated. (default "./bindata.go")-pkg stringPackage name to use in the generated code. (default "main")-prefix stringOptional path prefix to strip off asset names.-tags stringOptional set of build tags to include.-versionDisplays version information.

生成.go文件

go-bindata -o=pkg/bindata.go -pkg=pkg template/...

将template/下的静态资源生成到pkg/bindata.go,文件的包名为pkg。
如果出现bindata: Failed to stat input path '.go': CreateFile .go,删除.go ,再修改文件名即可。

PS D:\go_workspace\src\test> go-bindata -o=pkg/bindata.go -pkg=pkg template/...
bindata: Failed to stat input path '.go': CreateFile .go: The system cannot find the file specified.

使用

生成的bindata.go为我们提供了这些方法

// 根据名称加载并返回文件内容
func Asset(name string) ([]byte, error) {}// 类似于Asset,但在出错时会panic,适用于初始化全局变量
func MustAsset(name string)[]byte{}// 返回文件的元数据信息
func AssetInfo(name string)(os.FileInfo,error){}// 返回所有嵌入文件的名称列表
func AssetNames() []string{}// 返回指定目录下的文件和子目录名称
func AssetDir(name string) ([]string, error){}// 将单个嵌入的文件恢复到指定目录
func RestoreAsset(dir, name string) error{}// 递归的将嵌入的文件和目录恢复到指定目录
func RestoreAssets(dir, name string) error{}

使用很简单,如:

temp, err := tools.Asset("data/template/reach_overstock_info.tmpl")if err != nil {vars.Logger.Errorf(ctx, "wechat_service.SendReachOverstockMessage tools.Asset err %#v", err)}
src := data.Overstocks
tmpl, err := template.New("reach_overstock_info").Parse(string(temp))

小结

go bindata为我们提供了将静态资源嵌入到包里,即将静态资源生成.go文件。


http://www.ppmy.cn/devtools/134826.html

相关文章

【会话文本nlp】对话文本解析库pyconverse使用教程版本报错、模型下载等问题解决超参数调试

前言&#xff1a; 此篇博客用于记录调用pyconverse库解析对话文本时遇到的问题与解决思路&#xff0c;以供大家参考。 文章目录 pycoverse介绍代码github链接问题解决1 [cannot import name ‘cached_download‘ from ‘huggingface_hub‘ 问题解决](https://blog.csdn.net/wei…

羊城杯2020Easyphp

审题 看到url&#xff0c;可以想到伪协议读取 尝试过后可以发现&#xff0c;题目绕过了read后面的编码 我们可以尝试双重urlencode进行绕过 ?filephp://filter/read%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%…

Scala的Set集合

//设置一个Book。有三个属性&#xff1a;书名&#xff0c;作者&#xff0c;价格 class Book(var bookNmame:String,var author:String,var price:Double){} object demo7 {def main(args: Array[String]): Unit { // val set1 Set(1,1,2,3,3) // println(set1)//创建可…

1+X应急响应(网络)系统加固:

系统加固&#xff1a; 数据库的重要性&#xff1a; 数据库面临的风险&#xff1a; 数据库加固&#xff1a; 业务系统加固&#xff1a; 安全设备加固&#xff1a; 网络设备加固&#xff1a;

深度学习神经网络创新点方向

一、引言 深度学习神经网络在过去几十年里取得了令人瞩目的成就&#xff0c;从图像识别、语音处理到自然语言理解等众多领域都有广泛应用。然而&#xff0c;随着数据量的不断增长和应用场景的日益复杂&#xff0c;对神经网络的创新需求也愈发迫切。本文将探讨深度学习神经网络…

linux病毒编写+vim shell编程

学习视频来自B站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 请一定遵循《网络空间安全法》&#xff01;&#xff01;&#xff01; Linux目录介绍 /bin 二进制可执行文件&#xff08;kali里面是工具一些文件&#xff09;/etc 系统的管理和配置文…

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转(跨文件跳转)这些功能

&#xff08;一&#xff09;方法一&#xff1a;安装插件SystemVerilog - Language Support 安装一个vscode插件即可&#xff0c;插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&am…

Redis设计与实现 学习笔记 第十七章 集群

Redis集群是Redis提供的分布式数据库方案&#xff0c;集群通过分片&#xff08;sharding&#xff0c;水平切分&#xff09;来进行数据共享&#xff0c;并提供复制和故障转移功能。 17.1 节点 一个Redis集群通常由多个节点&#xff08;node&#xff09;组成&#xff0c;在刚开…