Go fmt on a whole source tree

前端 未结 6 876
借酒劲吻你
借酒劲吻你 2021-01-30 03:36

I have a project currently organized something like this:

~/code/go
         /bin
         /pkg
         /src
             /proj/main.go
                  /some_packa         


        
相关标签:
6条回答
  • 2021-01-30 04:21

    Also, you can try to run command:

    go fmt ./...
    

    from your project directory.

    0 讨论(0)
  • 2021-01-30 04:22
    find proj -type f -iregex '.*\.go' -exec go fmt '{}' +
    

    Explanation

    • find proj: find everything in this directory...
      • -type f: ...that is a file
      • -iregex '.*\.go': ...and case-insensitively matches the regular expression .*\.go
    • ...and execute go fmt followed by as many matched files as the operating system can handle passing to an executable in one go.
    0 讨论(0)
  • 2021-01-30 04:26

    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.

    0 讨论(0)
  • 2021-01-30 04:31

    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.

    0 讨论(0)
  • 2021-01-30 04:38

    if you are using GoLand IDE, right click on project and you will find Go Tools.

    0 讨论(0)
  • 2021-01-30 04:40

    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 :-)

    0 讨论(0)
提交回复
热议问题