• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

golang1.16内嵌静态资源指南-go:embed 新特性

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

参考链接:https://www.cnblogs.com/apocelipes/p/13907858.html

 

对于一个完整的嵌入资源,代码中的声明是这样的:

//go:embed images
var imgs embed.FS

//go:embed a.txt
var txt []byte

//go:embed b.txt
var txt2 string

一共有三种数据格式可选:

数据类型 说明
[]byte 表示数据存储为二进制格式,如果只使用[]byte和string需要以import (_ "embed")的形式引入embed标准库
string 表示数据被编码成utf8编码的字符串,因此不要用这个格式嵌入二进制文件比如图片,引入embed的规则同[]byte
embed.FS 表示存储多个文件和目录的结构,[]byte和string只能存储单个文件

实际上接受嵌入文件数据的变量也可以是string和[]byte的类型别名或基于他们定义的新类型,例如下面的代码那样:

type StringAlias = string

//go:embed a.txt
var text1 StringAlias

type NewBytes []byte

//go:embed b.txt
var text2 NewBytes

我们先来看用[]bytestring嵌入单个文件的例子:

package main

import (
    "fmt"
    _ "embed"
)

//go:embed macbeth.txt
var macbeth string

//go:embed texts/en.txt
var hello string

func main() {
    fmt.Println(len(macbeth)) // 麦克白的总字符数
    fmt.Println(hello) // Output: Hello, world
}

再来看看二进制文件的例子,embed_img.go如下所示:

package main

import (
    "fmt"
    _ "embed"
)

//go:embed imgs/screenrecord.gif
var gif []byte

//go:embed imgs/png/a.png
var png []byte

func main() {
    fmt.Println("gif size:", len(gif)) // gif size: 81100466
    fmt.Println("png size:", len(png)) // png size: 4958264
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go 并发 、并行、线程池发布时间:2022-07-10
下一篇:
GoPackages、Variables、functions发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap