首页  >  文章  >  Go语言中有依赖的包吗

Go语言中有依赖的包吗

小老鼠
小老鼠原创
2023-04-17 16:14:551042浏览

Go语言中有依赖的包,其安装依赖包的方法有∶1、使用“go get”命令安装依赖包;2、开启“go mod”,然后在工程目录下使用"“go get"拉包;3、在github中手动下载依赖包并放到对应的目录;4、拷贝“GOPATH/pkg/mod”下对应的包;5、直接把代码放到工程里面,然后使用“go tidy”自动规整包依赖即可。

Go语言中有依赖的包吗

本教程操作系统:Windows10系统、go1.20版、Dell G3电脑.

Go语言中有依赖的包。

虽然go现在已经有比较好用的go mod包管理工具了。但是由于某些不可描述的原因,在安装依赖时对于新手依旧会有很多问题,一起来看看怎么解决吧?

0C959FD8-485B-475d-BD07-06A40A7B4AA7.png

一、直接go get

从第一天接触go的包依赖开始,你的老师或者看到的资料都是告诉你:直接go get

这是最原始的安装方式,能解决大部分包的依赖问题。

但不是100% 都能安装成功,比如上面截图里面的包:golang.org/x/crypto/ssh

直接go get,可能会因为不可描述的原因无法访问到golang.org这个网址,包就无法安装成功。

二、配置 GOPROXY

go mod是go 1.11 新加的特性。

所以只要go版本大于 1.11,就自带了go mod包管理。

这是一个好东西,如果开启了go mod

项目里面初始化了go mod,再在工程目录下面使用go get拉包会自动使用go mod拉包,并整理到go.mod文件里。

但是默认使用的源是国外的,所以安装依赖包一般都很慢,或者不能成功。

所以需要设置下他们的代理,让他们从国内的服务器出去,这样速度和稳定性都能更好些。

如果使用的是goland可以command+,唤出偏好设置,在里面设置代理:

QQ截图20230417161349.png

推荐代理到https://goproxy.cn这个上,七牛云家的,一直使用,很稳定。

修改好后,记得重新开终端!

如果使用的是其他IDE或者命令行,自行百度怎么设置代理。

设置完成后使用go env能看到当前go使用到的环境变量,可以用来检查配置是否OK。

三、使用github

如果上面两步操作后都还不能安装成功,就得使用非正常手段来安装依赖了。

包的引用情况

首先需要理解go本地的包是怎么存放,怎么引用的。

  • 如果是传统的go get下载的依赖包会存放在GOPATH/src/域名/包名 下面。
  • 如果是使用的go mod下载的依赖包会存放在GOPATH/pkg/mod/域名/包名@版本号 下面。

所以可以把包手动下载放到对应的目录下面即可。

手动下载包

对于github国内并不是完全不能访问,只是可能会比较慢,或者时常打不开,此时可以碰碰运气。

官方包都可以在这个仓库下面找到:github.com/golang

如何安装在每个包的README.md里面都会有描述:

The easiest way to install is to run go get -u http://golang.org/x/net. You can also manually git clone the repository to $GOPATH/src/http://golang.org/x/net.

大部分的依赖包都能在github里面找到对应包。

四、利用人脉

沿用上一种方案的思路,不是所有人都不能科学上网,可以寻求身边能科学上网的朋友,帮你下载包给你。

然后把GOPATH/pkg/mod下面对应的包拷贝。

五、使用go mod

最后还有一种场景,那就是知道包名字,通过文档拿到一些范例demo。

直接把代码放到工程里面,然后使用go tidy来自动规整包依赖。

一些常识

  • 1、包名就是仓库地址

比如:github.com/gin-gonic/gin

报名大都是代码所在仓库地址,大都是可以直接访问的。

  • 2、包里面的包

依赖包有一个非常好玩的地方,有时使用的包是包里面的包。

可能有点绕,但是很好理解。

比如文章开头的:golang.org/x/crypto/ssh这个包,

他就是 golang.org/x/crypto下面的包。

所以直接安装ssh包,往往会出现找不到包的情况,所以你就需要往上一级安装。

以上是Go语言中有依赖的包吗的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn