I have a project currently organized something like this:
~/code/go /bin /pkg /src /proj/main.go /some_packa
Also, you can try to run command:
go fmt ./...
from your project directory.
find proj -type f -iregex '.*\.go' -exec go fmt '{}' +
find proj
: find everything in this directory...
-type f
: ...that is a file-iregex '.*\.go'
: ...and case-insensitively matches the regular expression .*\.go
go fmt
followed by as many matched files as the operating system can handle passing to an executable in one go.The command gofmt ./...
mentioned by some, does not work on Windows (at least on my Win7).
Instead of it, I used gofmt -d .\
which works recursively. I use the -d
flag because I want to list the changes I need to make in order to pass the check.
NB: golint ./...
does work on Windows, just gofmt ./...
doesn't.
You can use three dots (...
) as a wildcard. So for example, the following command will format all github.com packages:
go fmt github.com/...
This wildcard also works with other go commands like go list
, go get
and so. There is no need to remember such an ugly find command.
if you are using GoLand IDE, right click on project and you will find Go Tools
.
If you use gofmt
instead of go fmt
, it's recursive. For example, following command
gofmt -s -w .
(notice the little dot at end) recursively formats, simplifies, and saves result into every file under current directory. I have a shell alias gf
defined as gofmt -s -w .
and find it quite handy.
Try gofmt -l .
(list files whose formatting differs from gofmt's) first if you want :-)