先看程序a.go:
package main
import (
"fmt"
"github.com/apodemakeles/ugo/time"
)
func main() {
fmt.Println(utime.NowUnixTS())
}
编译出错, 因为没对应的包。
GOPATH路径是:/xxx/taoge, 而a.go的路径是/xxx/taoge/src/learn, 怎么搞呢? 下载go的dep包, 然后在learn目录下执行dep init, 看看结果:
/xxx/taoge/src/learn$ dep init
Using ^0.3.0 as constraint for direct dep github.com/apodemakeles/ugo
Locking in v0.3.0 (29d7613) for direct dep github.com/apodemakeles/ugo
/xxx/taoge/src/learn$
/xxx/taoge/src/learn$
/xxx/taoge/src/learn$
/xxx/taoge/src/learn$ ls
Gopkg.lock Gopkg.toml a.go vendor
/xxx/taoge/src/learn$
/xxx/taoge/src/learn$
/xxx/taoge/src/learn$
/xxx/taoge/src/learn$ go run a.go
1539865889
/xxx/taoge/src/learn$
vendor下面便有所需要的包。
至于dep相关命令, 查一下就知道了。
还要说明一下, vendor路径的优先级比GOPATH还高。但是,如果在/xxx/taoge/src下面放置a.go, 那就找不到/xxx/taoge/src/learn目录下的vendor目录了, 而如果在/xxx/taoge/src/learn/yyy下放置a.go, 依然可以找到vendor, 为什么呢?因为找vendor目录的原则是:先找当前目录下的vendor目录, 找不到的话, 再找上一路径下的vendor目录, 以此类推。
不多说。