golang 下面弄资源文件给我一种很难受的感觉
不过go 1.16 后 //go:embed 可以轻松制作资源文件 在之前需要借助第三方包 等实现
当然也可以用工具将文件转换成 []byte 然后在来操作。
这里有个转换工具 文件小于1mb的可以直接使用在线版处理 大于的可以下载文件命令行工具
操作连接: https://zelig.cn/b2/ 同时也支持C++/Pascal
早前我放置一些小图标什么的 都是下例。。。。
var _data = []byte{ 0, 0, 1, 0, 5, 0, 64...} func Save_data(fileName string) error { if f, err := os.Create(fileName); err == nil { defer f.Close() f.Write(_data) } return nil } func main() { Save_data("ice.ico") }
go 1.16的 可以通过下面的这个例子 来进行
import _ "embed" //go:embed 本地文件 var res []byte
直接操作 变量 res即可
也不一定是[]byte
如果是文本也就可以是
import _ "embed" //go:embed test.txt var test string
还有个多文件使用的 现在应该也有不少框架支持了吧
//go:embed file-1.txt //go:embed file-2.txt var files embed.FS data, _ := f.ReadFile("file-1.txt") fmt.Println(string(data)) data, _ = f.ReadFile("file-2.txt") fmt.Println(string(data))
以上就是embed的三种数据格式 下面简单的说明
数据类型 | 说明 |
---|---|
[]byte | 表示数据存储为二进制格式,如果只使用[]byte和string需要以import (_ "embed")的形式引入embed标准库 |
string | 表示数据被编码成utf8编码的字符串,因此不要用这个格式嵌入二进制文件比如图片,引入embed的规则同[]byte |
embed.FS | 表示存储多个文件和目录的结构,[]byte和string只能存储单个文件 |
好吧 你可以来试一下吧。
还没有评论,来说两句吧...