go generate stdout 管道传输到 gofmt 到文件

go generate stdout piped to gofmt to file

go generate 可以将 stdout 从 go 运行 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)
}

直接使用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,因为 shell 可能不适用于所有安装了 Go 工具 运行.

的系统