Go语言package搜索路径

97 阅读1分钟

 Go语言在使用中,大家都绕不开搜索路径这个概念。简单来说,Go语言的搜索路径分如下几种。

1 引用系统自带的各种package

 不用管搜索路径,会自动去加载。

2 完全自包含项目

 如果项目里面只存在package main,那么就会在本路径搜索。

3 引用了其它的包

 会按如下的顺序进行搜索,如果搜索了就会停止。

  1. 搜索当前路径的vendor目录
  2. 搜索上一级目录里面的vendor目录
  3. 一直往上搜索到$GOPATH/src里面的vendor目录
  4. 搜索GOPATH/src的路径  如果存在多个GOPATH,会从前到后一个一个搜索,找到就停止了。注意不会在当前路径开始搜索。

 因为上面的搜索顺序中,搜索到包就会停止,所以如果vendor里面存在包,但是不存在某函数,即使$GOPATH存在同样的包并且包含函数,也会报错找不到定义的函数,因为搜索到包就结束了。