在embed中,可以将静态资源文件嵌入到三种类型的变量,分别为:字符串、字节数组、embed.FS文件类型
如:main.go
package main
import (
"embed"
"fmt"
)
//go:embed testdata.txt
var s string
//go:embed testdata.txt
var b []byte
//go:embed *.txt
var f embed.FS
func main() {
fmt.Println(s)
fmt.Println(b)
fmt.Println(f.ReadFile("testdata.txt"))
}
testdata.txt内容为
中国
人民
上面代码的执行结果为:
中国
人民
[228 184 173 229 155 189 10 228 186 186 230 176 145]
[228 184 173 229 155 189 10 228 186 186 230 176 145] <nil>
作用:
go generate 允许你在 go 代码中来运行当前系统中已安装的程序,原则上你可以运行任何程序,但是此命令设计的初衷是用来创建或者更新go源码文件。
必须手动执行 go generate,才会去解析执行 generate 指令,并且 go generate 命令不会执行go源代码。
单个运行只需要在对应目录(包)下执行:go generate
注意事项:
- 必须在.go源码文件中。
- 每个源码文件可以包含多个generate特殊注释。
- 显示运行go generate命令时,才会执行特殊注释后面的命令。
- 如果前面的注释执行出错,则终止执行。
- //与go:generate之间不能有空格。
可以通过执行go generate来解析执行代码里的generate指令.