猿问

go 生成标准输出到 gofmt 到文件

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)

}


幕布斯6054654
浏览 181回答 1
1回答

眼眸繁星

直接使用格式包而不是运行shell://go:generate go run main.gopackage mainimport (    "go/format"    "io/ioutil"    "log")const content = `package mainfunc     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 工具的所有系统上都可用。
随时随地看视频慕课网APP

相关分类

Go
我要回答