采用go mod包管理的方式
go程序找不到包导致无法运行的问题, 都是因为没有搞懂当前的包管理方式
一: 以前的默认模式,必须将项目放在gopath/src下
二: 使用go mod 包管理方式, 项目可以放到任意位置,这样目录下需要有go.mod文件
实例演示:
go语言的安装路径和配置go语言的环境

上面打印出来的环境变量有很多,但着重理解并记住这几个环境变量的定义即可:

以下是我go环境配置,重点记住GOPATH路径


一、GO111MODULE 的三种模式
auto
如果在gopath/src下,但是存在go.mod文件,就采用的go mod包管理方式;
在gopath/src下,但没有go.mod文件, 采用以前默认的方式;
若未在gopath/src下, 自然是采用的go mod包管理方式(前提是需要go.mod文件存在)
on
不管在不在gopath/src下,都采用的go mod包管理方式
off
以前的默认方式(这时候项目必须放在gopath/src下),若需要引用外部包文件,使用go get命令下载下来。
比如在一个.go文件中,require (“github.com/gin-gonic/gin”)
那么使用go get github.com/gin-gonic/gin ,并且这个下载下来的资源会放在gopath/src下, 而使用go mod包管理的方式,下载下来的资源会放在gopath/pkg下。
小细节:
采用go mod 包管理方式, 虽然不会去gopath/src下找资源, 但是会去gopath/pkg下找资源, 同时还会去goroot/src下寻找(回忆一下, 最常用的fmt.Println(), fmt等等那些包就在那里);
采用以前的默认方式, 就会去gopath/src, 以及goroot/src下寻找,不管是哪种方式都需要去goroot/src,因为fmt等包是在安装go的时候就下载好的资源。
二、go mod包管理方式(如何调用同工程中的包)
2.1 GPPATH配置路径如下(即G:\Program Files\GoProjects)

2.2 go mod init LLj 生成的项目模块名称,可以在go.mod中看到

2.3 现在需要在main.go中调用这个pak/liang包中的Test()函数


2.4 go run main.go 即可看到结果

三、go mod包管理方式(如何调用不同工程中的包)
3.1 GPPATH配置路径如下(即G:\Program Files\GoProjects)

3.2 go mod init GoTest1 生成的项目模块名称,可以在go.mod中看到

3.3 go mod init GoTest2 生成的项目模块名称,可以在go.mod中看到,GoTest2项目中定义了包目录(GoTest2/pak/ttt)

3.4 现在需要在GoTest1下main.go中调用这个GoTest2项目中定义了包目录(GoTest2/pak/ttt),包中的SayHello()函数


3.5 在GoTest1下go run main.go 即可看到结果


参考:https://blog.csdn.net/qq_51721904/article/details/128231308

浙公网安备 33010602011771号