有什么方法可以使用 go install 命令 运行 自定义命令吗?
Is there any way to run custom commands with go install command?
我写了一个简单的代码生成工具。我在这个工具中使用了 text/template 包。当我使用 go build
命令安装它时,它安装成功。我面临的唯一问题是如何在安装程序时安装模板。目前无法获取模板。
我应该在 .go 文件中使用模板文本,还是有任何其他方法可以提供在特定位置安装二进制文件和模板的说明?我认为将代码之间的模板文本作为原始字符串是很好的。但是有什么特别的方法可以做到这一点吗?
您可以使用 embed 包。
Package embed provides access to files embedded in the running Go program.
Go source files that import "embed" can use the //go:embed directive to initialize a variable of type string, []byte, or FS with the contents of files read from the package directory or subdirectories at compile time.
import (
"embed"
"text/template"
)
//go:embed templates/*
var mytemplateFS embed.FS
func main() {
t := template.New("")
t = template.Must(t.ParseFS(mytemplateFS, "*"))
}
我写了一个简单的代码生成工具。我在这个工具中使用了 text/template 包。当我使用 go build
命令安装它时,它安装成功。我面临的唯一问题是如何在安装程序时安装模板。目前无法获取模板。
我应该在 .go 文件中使用模板文本,还是有任何其他方法可以提供在特定位置安装二进制文件和模板的说明?我认为将代码之间的模板文本作为原始字符串是很好的。但是有什么特别的方法可以做到这一点吗?
您可以使用 embed 包。
Package embed provides access to files embedded in the running Go program.
Go source files that import "embed" can use the //go:embed directive to initialize a variable of type string, []byte, or FS with the contents of files read from the package directory or subdirectories at compile time.
import (
"embed"
"text/template"
)
//go:embed templates/*
var mytemplateFS embed.FS
func main() {
t := template.New("")
t = template.Must(t.ParseFS(mytemplateFS, "*"))
}