资讯专栏INFORMATION COLUMN

go资源内嵌embed

社区管理员 / 620人阅读

Go官方在1.16版本发布了官方内嵌资源到二进制的功能,使得部署更加简单

在开发web的时候往往会有一些web文件,而部署的时候需要部署一个二进制还要部署web文件比较繁琐,在go1.16之前也有很多包实现了内嵌资源文件到二进制中如https://github.com/gobuffalo/packr,而如今go官方实现了这个特性

基本用法

package mainimport (
	_ "embed"
	"fmt")//go:embed Dockerfilevar f stringfunc main() {
	fmt.Println(f)}

上面的例子就是将当前目录的dockerfile内容内嵌到变量f中,编译之后即使这个文件不存在也能打印出内容

嵌入文件夹

package mainimport (
    "embed"
    "fmt"
    "path/filepath")//go:embed foovar fs embed.FSfunc main() {
    files, err := fs.ReadDir("foo")
    if err != nil {
        fmt.Println(err)
    }
    for _, file := range files {
        d, _ := fs.ReadFile(filepath.Join("foo", file.Name()))
        if err != nil {
            fmt.Println(err)
        }
        fmt.Println("文件名:", file.Name(), "内容:", string(d))
    }}

上面的代码将目录下的foo目录内嵌到fs这个变量中,然后打印出这个文件夹里文字的名字和内容

$ tree foo 
foo
├── test
└── test2

0 directories, 2 files

# 编译
$ go build -o test .

# 执行
$ ./test                
文件名: test 内容: hahah
文件名: test2 内容: testest

注意

  • 路径默认是从mod的目录为根目录

  • 会忽略”.“开头和”_“开头的文件

  • 不管是win还是linux都使用”/“

  • 支持匹配如,//go:embed foo/*.yaml

  • 可以同时导入多个目录 如//go:embed foo test


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127884.html

相关文章

  • embed 嵌入插件遮住 div层 解决方案

    摘要:去掉,竟然被设置高于遮住了,神奇的存在。最终解决方案是菜单显示时,一起触发层显示遮住,菜单隐藏时触发,隐藏附加网上常见情况内嵌,解决为内嵌视频,解决为 embed基本没怎么用过,一开始看见竟然以为是过时的播放器标签,就随口说了这个已经时了吧 (汗颜,果断不了解清楚不能乱说话) 认识: 标签定义嵌入的内容,比如插件是HTML5的新标签 我遇到的问题: 问题简述: embed内嵌插件: ...

    whinc 评论0 收藏0
  • SpringBoot究竟是如何跑起来的?

    摘要:你可以试着沿着调用栈代码一层一层的深入进去,如果你不打断点,你根本不知道接下来程序会往哪里流动。接下来再看看运行时堆栈,看看一个请求的调用栈有多深。就是如此被自动装配进的。 摘要: 神奇的SpringBoot。 原文:SpringBoot 究竟是如何跑起来的? 作者:老钱 Fundebug经授权转载,版权归原作者所有。 不得不说 SpringBoot 太复杂了,我本来只想研究一下...

    DevWiki 评论0 收藏0
  • 告诉你,Spring Boot 真是个牛逼货!

    摘要:同时,也提供了一个命令行工具来执行的脚本。应用监控提供一系列端点可以监控服务及应用,能对应用做健康检测。这样,需要对配置信息非常熟悉,要找起问题来不是很容易。相对于优点来说,这些缺点也都不算什么。总之,是值得我们任何一个开发者尝试摸索的。 现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用...

    MoAir 评论0 收藏0
  • HTML中嵌入SVG图片的N种方式

    摘要:完美总结中嵌入图片的种方式在解决这个问题的过程中,顺便查了下,发现除了这个是最容易想到的因为图片也是图片嘛。不过和标签一样,无法显示内嵌的使用标签标签是新增的一个专门显示图片的标签。 最近用到了个SVG图片,里面还是带标签的,想要把它嵌入到HTML中还是有些工作要做的。 经历 最初的图片是这样写的: 这是百度 ? p.s. 先拿百度的图...

    NickZhou 评论0 收藏0
  • .Net大户的选择:Windows Container在携程的应用

    摘要:一些的技术细节最开始的时候携程用物理机部署应用,为了保证互不冲突,用户在一个物理机上只部署一个应用。目前支持的系统是,这个版本是去年月份正式发布的携程是国内比较早的一批拿到了他们的版本,支持两类,一类是,另一类是。 数人云上海&深圳两地容器之 Mesos/K8S/Swarm 三国演义的嘉宾精彩实录第四弹!小数已经被接连不断的干货搞晕了,沉浸技术的海洋好幸福~Windows contai...

    leo108 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<