前言
在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧。
看了下go源码embed/embed.go很简单,并且看embed/internal/embedtest/embed_test.go就知道如何使用。
示例程序
嵌入文件直接访问
原理是使用go:embed标签来完成。下面是直接读取文件内容,需要注意下面几点。
文件不是utf8编码时,输出内容为中文会乱码。
测试过嵌入文件只能为源码文件同级目录和子目录下的文件,试过其他目录的绝对路径或相对路径会报错。
我测试过几个能想到的场景,有些会报错,所以在使用时需要注意。
package main
import (
_ "embed"
)
//go:embed test.txt
var testString string // 当前目录,解析为string类型
//go:embed test.txt
var testByte []byte // 当前目录,解析为[]byte类型
//go:embed test/test.txt
var testAbsolutePath string // 子目录,解析为string类型
//go:embed notExistsFile
var testErr0 string // 文件不存在,编译报错:pattern notExistsFile: no matching files found
//go:embed dir
var testErr1 string //