本文作者:icy

Golang 资源文件和文件数组

icy 2023-03-31 962 抢沙发
Golang 资源文件和文件数组摘要: golang 下面弄资源文件给我一种很难受的感觉 不过go 1.16 后 //go:embed 可以轻松制作资源文件 在之前需要借助第三方包 等实现当然也可以用工具将文件转换成 [...

go-76.jpg


golang 下面弄资源文件给我一种很难受的感觉

不过go 1.16 后 //go:embed 可以轻松制作资源文件 在之前需要借助第三方包 等实现

当然也可以用工具将文件转换成 []byte 然后在来操作。

这里有个转换工具 文件小于1mb的可以直接使用在线版处理 大于的可以下载文件命令行工具

操作连接: http://www.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只能存储单个文件


好吧 你可以来试一下吧。


觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

分享

发表评论

快捷回复:

评论列表 (暂无评论,962人围观)参与讨论

还没有评论,来说两句吧...