1. 简介

go generate常用于自动生成代码,它可以在代码编译之前根据源代码生成代码。当运行go generate时,它将扫描与当前包相关的源代码文件,找出所有包含”// go:generate”的注释语句,提取并执行该注释后的命令,命令为可执行程序。该过程类似于调用执行shell脚本。

2. 实例

  1. package main
  2. import "fmt"
  3. //go:generate echo hello world!
  4. //go:generate go run gen.go
  5. //go:generate echo backend!
  6. func main(){
  7. fmt.Println("main function")
  8. }

//这个例子依次会打印出:hello world!、main function、backend!

注意事项

  1. 该特殊注释必须包含在.go源码文件中。
  2. 每个源码文件可以包含多个generate特殊注释。
  3. go generate不会被类似go build,go get,go test等命令触发执行,必须由开发者显式使用。
  4. 命令执行是串行的,如果出错,后续命令不再执行。
  5. 特殊注释必须以“//go:generate”开头,双斜线之后没有空格。
  6. 执行命令必须是系统PATH(echo $PATH)下的可执行程序。