Go语言包管理-gomod包管理下的巨坑(踩雷经验)

学习Go有很长一段时间了,一直诟病的就是Go的包管理机制,
感觉好像从来没有真正学明白这个东西,总的来说就是踩一个坑避一个坑吧。
——————————————————————————————————————————————————————————

GoPath包管理模式

GOROOT:就是Go的安装目录(C:\Go),(类似于java的JDK),里面有bin目录(C:\Go\bin)
GOPATH: 是我们的工作空间,保存go项目代码和第三方依赖包 (可在环境变量设置,我这里改到C盘下了,默认F:\Go用户目录下)

GOPATH可以设置多个,其中,第一个将会是默认的包目录,使用go get下载的包都会在第一个path中的src目录下,使用go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件

使用GOPATH时,Go会在以下为目录中搜索包:
GOROOT/src:Go标准库
GOPATH/src:应用自身代码和第三方依赖的代码

go env -w GO111MODULE=off (将配置更改为使用GoPath的命令)
即在配置中把GO111MODULE的值改为off
go env 查看配置项(包含ROOT,PATH等)

坑!!!!!使用这种模式所有文件都要放在GOPATH/src的目录下,要不找不到!

——————————————————————————————————————————————————————————

GoMod包管理模式

通常情况选我们的项目不会去特意放在目录下,Go就引入了一个GoMod的东西,也叫包管理工具

当我们在新建一个项目后,要使用
go mod init <项目名>
的方式去先创建一个包管理模板
![在这里插入图片描述](https://img-blog.csdnimg.cn/19cb346e4c3d419ba3e54399cc4e1638.png

这是目前我的包结构:
在这里插入图片描述
我们休要执行如下命令
在这里插入图片描述

可见出现了一个go.mod文件
在这里插入图片描述
module AA
记住这个东西,从此你再AA目录下创建的包就可以引入了,当然仅限AA目录下使用。
在这里插入图片描述
现在我们尝试引入

第一个小细节

在这里插入图片描述

你会发现,报错?
为什么呢?
在这里插入图片描述
换成小写,正常了。。
在这里插入图片描述
CC就可以用大写
这是因为我的BB.go是package bb
而CC.go是package CC
一个小细节就可能让你研究很久!

第二个小细节

在引入包的时候要引入的是对应包的目录,而不是具体的文件!
在这里插入图片描述
而在具体.go文件的内部
在这里插入图片描述
函数名为大写代表可以引用,也就是公有。
函数名为小写则只有本包可以调用,也就是私有。
变量的定义也一样。

本文章持续积累关于Go包管理的相关问题,欢迎喜欢Go的朋友留言讨论,指导!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值