So basically you answered your own question. You want a faster solution? Try "tuning" the go list
command.
To check the existence of a single package, you may pass that single package to go list
, and if it exists, it will output it, else the output will be an error message.
For example, executing
go list github.com/some/package
If github.com/some/package
exists, output will be:
github.com/some/package
You can also pass multiple packages to go list
:
go list github.com/some/package github.com/other/package
And output will be:
github.com/some/package
github.com/other/package
If the passed package doesn't exist, output will be something like:
can't load package: package github.com/some/package: cannot find package "github.com/some/package" in any of:
/usr/local/go/src/github.com/some/package (from $GOROOT)
<GOPATH-here>/src/github.com/some/package (from $GOPATH)
Also note that if the package you pass does not contain *.go
files, you get a different message:
can't load package: package github.com/some/package: no buildable Go source files in <GOPATH-here>/src/github.com/some/package
If you expect some package inside it, append the ...
:
go list github.com/some/package/...
For more options and possibilities, run go help list
, and see related question: How to list installed go packages