go generate 的语法是什么,可以将 stdout 从 go run 传输到 gofmt 并最终传输到文件?下面是我尝试过的简单示例。它在文件中main.go。搜索后我找不到任何这样的例子。谢谢你。编辑:最终我想使用go generate并让它写一个格式化的文件。//go:generate go run main.go | go fmt > foo.gopackage mainimport "fmt"const content = `package mainfunc foo() string {return "Foo"}`func main() { fmt.Print(content)}
1 回答

眼眸繁星
TA贡献1873条经验 获得超9个赞
直接使用格式包而不是运行shell:
//go:generate go run main.go
package main
import (
"go/format"
"io/ioutil"
"log"
)
const content = `
package main
func foo() string {return "Foo"}
`
func main() {
formattedContent, err := format.Source([]byte(content))
if err != nil {
log.Fatal(err)
}
err = ioutil.WriteFile("foo.go", formattedContent, 0666)
if err != nil {
log.Fatal(err)
}
}
避免使用像 bash 这样的 shell,因为 shell 可能并非在运行 Go 工具的所有系统上都可用。
- 1 回答
- 0 关注
- 160 浏览
添加回答
举报
0/150
提交
取消