当前位置: 首页 > 工具软件 > go-freeling > 使用案例 >

go:build、go:embed、go:generate

陈浩
2023-12-01

go:build

Go编译限制_柏拉图个啥的博客-CSDN博客

go:embed

在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 generate 允许你在 go 代码中来运行当前系统中已安装的程序,原则上你可以运行任何程序,但是此命令设计的初衷是用来创建或者更新go源码文件。

必须手动执行 go generate,才会去解析执行 generate 指令,并且 go generate 命令不会执行go源代码。

单个运行只需要在对应目录(包)下执行:go generate

注意事项:

  1. 必须在.go源码文件中。
  2. 每个源码文件可以包含多个generate特殊注释。
  3. 显示运行go generate命令时,才会执行特殊注释后面的命令。
  4. 如果前面的注释执行出错,则终止执行。
  5. //与go:generate之间不能有空格。

可以通过执行go generate来解析执行代码里的generate指令.

 类似资料:

相关阅读

相关文章

相关问答