github.com/spotify/syslog-redirector-golang@v0.0.0-20140320174030-4859f03d829a/src/cmd/gofmt/doc.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 /* 6 Gofmt formats Go programs. 7 8 Without an explicit path, it processes the standard input. Given a file, 9 it operates on that file; given a directory, it operates on all .go files in 10 that directory, recursively. (Files starting with a period are ignored.) 11 By default, gofmt prints the reformatted sources to standard output. 12 13 Usage: 14 gofmt [flags] [path ...] 15 16 The flags are: 17 -d 18 Do not print reformatted sources to standard output. 19 If a file's formatting is different than gofmt's, print diffs 20 to standard output. 21 -e 22 Print all (including spurious) errors. 23 -l 24 Do not print reformatted sources to standard output. 25 If a file's formatting is different from gofmt's, print its name 26 to standard output. 27 -r rule 28 Apply the rewrite rule to the source before reformatting. 29 -s 30 Try to simplify code (after applying the rewrite rule, if any). 31 -w 32 Do not print reformatted sources to standard output. 33 If a file's formatting is different from gofmt's, overwrite it 34 with gofmt's version. 35 36 Formatting control flags: 37 -comments=true 38 Print comments; if false, all comments are elided from the output. 39 -tabs=true 40 Indent with tabs; if false, spaces are used instead. 41 -tabwidth=8 42 Tab width in spaces. 43 44 45 The rewrite rule specified with the -r flag must be a string of the form: 46 47 pattern -> replacement 48 49 Both pattern and replacement must be valid Go expressions. 50 In the pattern, single-character lowercase identifiers serve as 51 wildcards matching arbitrary sub-expressions; those expressions 52 will be substituted for the same identifiers in the replacement. 53 54 When gofmt reads from standard input, it accepts either a full Go program 55 or a program fragment. A program fragment must be a syntactically 56 valid declaration list, statement list, or expression. When formatting 57 such a fragment, gofmt preserves leading indentation as well as leading 58 and trailing spaces, so that individual sections of a Go program can be 59 formatted by piping them through gofmt. 60 61 Examples 62 63 To check files for unnecessary parentheses: 64 65 gofmt -r '(a) -> a' -l *.go 66 67 To remove the parentheses: 68 69 gofmt -r '(a) -> a' -w *.go 70 71 To convert the package tree from explicit slice upper bounds to implicit ones: 72 73 gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src/pkg 74 75 The simplify command 76 77 When invoked with -s gofmt will make the following source transformations where possible. 78 79 An array, slice, or map composite literal of the form: 80 []T{T{}, T{}} 81 will be simplified to: 82 []T{{}, {}} 83 84 A slice expression of the form: 85 s[a:len(s)] 86 will be simplified to: 87 s[a:] 88 89 A range of the form: 90 for x, _ = range v {...} 91 will be simplified to: 92 for x = range v {...} 93 */ 94 package main 95 96 // BUG(rsc): The implementation of -r is a bit slow.