我正在编写输出其他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
}
提前感谢您的时间和智慧。
答案 0 :(得分:7)
go/format
包使函数可用于格式化任意文本:
https://golang.org/pkg/go/format/
应该如此简单:
content, err := format.Source(content)
// check error
file.Write(content)