gofmt vs Uncrustify
gofmt
go.devUncrustify
github.comSide by side
| Figure | gofmt | Uncrustify |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Self-hosted | — | Yes |
| Plans published | 1 | 1 |
| Spec score · Code formatters | 7.8 (#6) | 7.6 (#11) |
| Spec score · Code Formatting Tools | 7.8 (#13) | 7.7 (#18) |
| Distribution | The Go installation process installs an executable called gofmt, equivalent to go fmt. | The project provides source code and precompiled Windows binaries through its releases page. |
| Editor integrations | The Go project documents gofmt integrations for Vim, Emacs, Eclipse, Sublime Text, Git pre-commit hooks, and Mercurial. | The README links usage guidance for Vim and an Uncrustify plugin for IntelliJ. |
| License | Go is an open source project distributed under a BSD-style license. | The repository identifies its license as GPL-2.0. |
| Platforms | The Go compiler toolchain can target AIX, Android, DragonFly BSD, FreeBSD, Illumos, Linux, macOS/iOS, NetBSD, OpenBSD, Plan 9, Solaris, and Windows. | The project lists Linux, QNX, OS X, BSD variants, Solaris 9 and Windows among operating systems it has tested. |
| Purpose | Gofmt automatically formats Go programs using tabs for indentation and blanks for alignment. | Uncrustify is a source code beautifier for C, C++, C#, Objective-C, D, Java, Pawn and Vala. |
| Support | Questions about using Go or announcements relevant to Go users should be sent to the golang-nuts mailing list. | The project directs bug reports to its GitHub issue tracker and welcomes patches through pull requests. |
Plans
In their own words
gofmt
gofmt is the Go source formatter distributed with Go installations, available on Linux, macOS, and Windows. It formats Go programs using tabs for indentation and spaces for alignment. With no path, it reads standard input; given a directory, it processes .go files recursively while skipping files whose names begin with a period. By default, reformatted source is written to standard output. Flags can show differences, list files that need formatting, apply rewrite rules, simplify code, or report all errors. The rewrite option uses patterns and replacements written as valid Go expressions. gofmt can also arrange documentation comments into canonical paragraphs, lists, headings, links, and code blocks. The Go project documents integrations for Vim, Emacs, Eclipse, and Sublime Text, plus Git pre-commit hooks and Mercurial. Since Go 1.18, it reads and formats files concurrently, with memory use limited in proportion to GOMAXPROCS. The executable is equivalent to go fmt. It is free, included in the Go installation, and distributed under a BSD-style license.