blob: 2e4c40c216d751c75864b569f3ae9a9058990185 [file] [log] [blame]
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
/*
Gofmt formats Go programs.
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.)
Usage:
gofmt [flags] [path ...]
The flags are:
-l
just list files whose formatting differs from gofmt's; generate no other output
unless -w is also set.
-r rule
apply the rewrite rule to the source before reformatting.
-w
if set, overwrite each input file with its output.
-spaces
align with spaces instead of tabs.
-tabindent
indent with tabs independent of -spaces.
-tabwidth=8
tab width in spaces.
Debugging flags:
-trace
print parse trace.
-comments=true
print comments; if false, all comments are elided from the output.
The rewrite rule specified with the -r flag must be a string of the form:
pattern -> replacement
Both 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.
Examples
To check files for unnecessary parentheses:
gofmt -r '(a) -> a' -l *.go
To remove the parentheses:
gofmt -r '(a) -> a' -w *.go
To convert the package tree from explicit slice upper bounds to implicit ones:
gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src/pkg
*/
package documentation
// BUG(rsc): The implementation of -r is a bit slow.