采用go mod包管理的方式

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

实例演示:
go语言的安装路径和配置go语言的环境
image
上面打印出来的环境变量有很多,但着重理解并记住这几个环境变量的定义即可:
image
以下是我go环境配置,重点记住GOPATH路径
image
image

一、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)
image

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

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

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

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

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

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

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

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

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

posted @ 2025-06-11 16:33  梁博客  阅读(18)  评论(0)    收藏  举报