1. 简介
go generate常用于自动生成代码,它可以在代码编译之前根据源代码生成代码。当运行go generate时,它将扫描与当前包相关的源代码文件,找出所有包含”// go:generate”的注释语句,提取并执行该注释后的命令,命令为可执行程序。该过程类似于调用执行shell脚本。
2. 实例
package main
import "fmt"
//go:generate echo hello world!
//go:generate go run gen.go
//go:generate echo backend!
func main(){
fmt.Println("main function")
}
//这个例子依次会打印出:hello world!、main function、backend!
注意事项
- 该特殊注释必须包含在.go源码文件中。
- 每个源码文件可以包含多个generate特殊注释。
- go generate不会被类似go build,go get,go test等命令触发执行,必须由开发者显式使用。
- 命令执行是串行的,如果出错,后续命令不再执行。
- 特殊注释必须以“//go:generate”开头,双斜线之后没有空格。
- 执行命令必须是系统PATH(echo $PATH)下的可执行程序。