go语言包搜索路径 go语言 包管理

Go语言中如何设置包的查找路径

二进制包安装的话:如果安装在了默认位置例如/usr/local/go (Windows系统:c:\Go)这个时候可以不需要设置GOROOT,如果改变了安装的这个默认目录,那么就需要设置GOROOTGOROOT的概念有点Go安装目录的意思GOPATH是一个开发环境目录的意思,下面必须包含bin、pkg、src,然后再src下面新建项目就可以了你在没有设置GOPATH的情况下,也可以把项目建在GOROOT/src下面,其实和GOPATH的概念类似

公司主营业务:网站建设、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出南京免费做网站回馈大家。

golang的 GOPATH和vendor的搜索关系

golang的 GOPATH和vendor的搜索关系

项目只有一个包,即main包,没有引用其他的包(golang自带的系统包除外)。

然后设置GOPATH=path/to/goproject,再运行go build myproject,这样就可以在任何目录下面编译,编译生成的可执行文件就在编译所在的目录下,而不是包源文件所在的目录。

基本规则:

鉴于此,建议golang项目必须严格按照规范的目录结构组织,哪怕是前面这种自包含的项目。

基本规则:

如果一个包在vendor和GOPATH下面都存在那么谁会优先使用呢。

结论是:

包mydeps在vendor目录下面和GOPATH路径下面都存在了,那么main.go引用的时候只会引用vendor下面的mydeps(src/myproject/vendor/mydeps),而忽略GOPATH下面的mydeps包(src/mydeps)。

前面提到GOPATH和PATH类似,可以包含多个路径,中间用分号隔开,go在搜索包的时候会按手续从前往后搜搜。那么vendor怎么处理层级关系呢。

规则是:

举例:

如果src/mydep/mydep1/mydep.go引用了myvendor1和myvendor,那是怎么搜索的呢

4.1 Go语言中包(Packages)基础知识

先看一下目录结构,注意这里的src名称是必须的,go在设置了GOPATH后,默认会添加src去寻找package,暂未查询是否有方法不按照src查询

根据上面的描述,Go语言中通过包中函数的名称来区分公共函数和私有函数,我们在main函数中是无法调用myPrivateFunc的

此时如果执行通过go run方式执行,会看到如下的提示信息,这与大部分语言对于包管理方式相关,所以我们通过两种不同的方法来让代码执行起来

返回如下,这里面对我们后续执行有影响的两个参数GO111MODULE和GOPATH

如果要使用gopath模式引用包,则需要关闭mod模式

设置GOPATH为当前路径,即main.go所在的路径

此时再查看go env时,GOPATH已经发生改变

我们再次尝试执行代码

可以看到public函数被调用


网站名称:go语言包搜索路径 go语言 包管理
文章源于:http://hbruida.cn/article/dospeip.html