去运行/构建没有得到依赖

go run and go build are not geting dependencies.

What I did:

  • I have done a go get of a package, it fetched it, and its dependencies, and build it. (all is good)
  • I run its command-line example program. (all is good)
  • I then created a new program based on this example, and go run it. (all is good)
  • Then copied this example program, and go run it. ( get a dependency error ).

Transcript

#↳ go version
go version go1.11.4 linux/amd64

#↳ echo $GOPATH
/home/????/+Files/workshops/programming/golang/gopath

#↳ go get -u github.com/cbroglie/mustache/...

#↳ cp -T $GOPATH/src/github.com/cbroglie/mustache/cmd/mustache/main.go my-mustache.go

#↳ go build -v my-mustache.go
my-mustache.go:8:2: cannot find package "github.com/spf13/cobra" in any of:
    /usr/local/go/src/github.com/spf13/cobra (from $GOROOT)
    /go/src/github.com/spf13/cobra (from $GOPATH)

I can see why it is not already installed: it was in a vendor sub-directory of the original source code. But why does it not install, when I build?

Check first your $GOPATH/bin folder: a go get -u github.com/cbroglie/mustache/... should already have compiled and installed all relevant binaries in it.

The README mentions:

To install mustache.go, simply run go get github.com/cbroglie/mustache/....


It looks like the mustache package is installed and working.
However when I try to build the cli example, it needs another package, if I go get it then all is well, however I was expecting go build to install all needed packages.
Am I wrong?

go build itself won't install dependencies, so you need to go get it, or activate go 1.11 modules and declare that dependencies in your new program modules.