6

我正在编写输出其他 Go 代码的 Go 代码。

我想知道是否有一种方法可以调用 gofmt 工具来格式化我从完成编写的代码中编写的代码。

我在 gofmt 上找到的文档,例如官方文档,都涉及如何从命令行使用 gofmt,但我想从 Go 代码本身中调用它。

例子:

func WriteToFile(content string) {
    file, err := os.Create("../output/myFile.go")
    if err != nil {
        log.Fatal("Cannot create file", err)
    }
    defer file.Close()
    fmt.Fprint(file, content)
    //Insert code to call gofmt to automatically format myFile.go here
}

提前感谢您的时间和智慧。

4

1 回答 1

14

go/format包提供了一个可用于格式化任意文本的函数:

https://golang.org/pkg/go/format/

应该很简单:

content, err := format.Source(content)
// check error
file.Write(content)
于 2017-08-10T14:31:27.083 回答