那么go generate可以通过管道将stdout从go run传输到gofmt并最终传输到一个文件,这是什么语法呢?下面是我尝试过的简单示例。它在main.go文件中。在搜索之后,我找不到任何这样的例子。谢谢。
编辑:最终我想使用go generate,让它写一个格式化的文件。
//go:generate go run main.go | go fmt > foo.go
package main
import "fmt"
const content = `
package main
func foo() string {return "Foo"}
`
func main() {
fmt.Print(content)
}发布于 2020-03-01 11:32:04
直接使用format package,而不是运行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,因为并不是所有运行Go工具的系统上都有这个shell。
https://stackoverflow.com/questions/60470956
复制相似问题