This package is not in the latest version of its module.
Go to latest Published: Jul 7, 2026 License: BSD-3-ClauseThe Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Modules with tagged versions give importers more predictable builds.
When a project reaches major version v1 it is considered stable.
Gofmt formats Go programs. It uses tabs for indentation and blanks for alignment. Alignment assumes that an editor is using a fixed-width font.
Without an explicit path, it processes the standard input. Given a file, it operates on that file; given a directory, it operates on all .go files in that directory, recursively. (Files starting with a period are ignored.) By default, gofmt prints the reformatted sources to standard output.
Usage:
gofmt [flags] [path ...]The flags are:
-d Do not print reformatted sources to standard output. If a file's formatting is different than gofmt's, print diffs to standard output. -e Print all (including spurious) errors. -l Do not print reformatted sources to standard output. If a file's formatting is different from gofmt's, print its name to standard output. -r rule Apply the rewrite rule to the source before reformatting. -s Try to simplify code (after applying the rewrite rule, if any). -w Do not print reformatted sources to standard output. If a file's formatting is different from gofmt's, overwrite it with gofmt's version. If an error occurred during overwriting, the original file is restored from an automatic backup.Debugging support:
-cpuprofile filename Write cpu profile to the specified file.The rewrite rule specified with the -r flag must be a string of the form:
pattern -> replacementBoth pattern and replacement must be valid Go expressions. In the pattern, single-character lowercase identifiers serve as wildcards matching arbitrary sub-expressions; those expressions will be substituted for the same identifiers in the replacement.
When gofmt reads from standard input, it accepts either a full Go program or a program fragment. A program fragment must be a syntactically valid declaration list, statement list, or expression. When formatting such a fragment, gofmt preserves leading indentation as well as leading and trailing spaces, so that individual sections of a Go program can be formatted by piping them through gofmt.
To check files for unnecessary parentheses:
gofmt -r '(a) -> a' -l *.goTo remove the parentheses:
gofmt -r '(a) -> a' -w *.goTo convert the package tree from explicit slice upper bounds to implicit ones:
gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/srcWhen invoked with -s gofmt will make the following source transformations where possible.
An array, slice, or map composite literal of the form: []T{T{}, T{}} will be simplified to: []T{{}, {}} A slice expression of the form: s[a:len(s)] will be simplified to: s[a:] A range of the form: for x, _ = range v {...} will be simplified to: for x = range v {...} A range of the form: for _ = range v {...} will be simplified to: for range v {...}This may result in changes that are incompatible with earlier versions of Go.
The implementation of -r is a bit slow.
If -w fails, the restored original file may not have some of the original file attributes.
| ? | : This menu |
| / | : Search site |
| f or F | : Jump to |
| y or Y | : Canonical URL |