Можете ли вы вызвать gofmt для форматирования файла, который вы написали, из кода Go, который его написал?

Я пишу код 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
}

Заранее спасибо за ваше время и мудрость.


person R. Duke    schedule 10.08.2017    source источник


Ответы (1)


Пакет go/format предоставляет функцию для форматирования произвольного текста:

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

Должно быть так же просто, как:

content, err := format.Source(content)
// check error
file.Write(content)
person captncraig    schedule 10.08.2017