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 .*\.gogo 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 :-)