你可以调用gofmt格式化你编写的Go代码中编写的文件吗?

时间:2017-08-10 14:30:04

标签: go gofmt

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

我想知道是否有办法调用gofmt工具来格式化我在写完代码的代码中编写的代码。

我在gofmt上找到的文档,例如the official docs,所有都涉及如何从命令行使用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
}

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

1 个答案:

答案 0 :(得分:7)

go/format包使函数可用于格式化任意文本:

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

应该如此简单:

content, err := format.Source(content)
// check error
file.Write(content)