type
status
category
date
slug
summary
tags
password
icon
📝 主旨内容
go module
是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13
版本开始,go module
将是Go语言默认的依赖管理工具。到今天Go1.14
版本推出之后Go modules
功能已经被正式推荐在生产环境下使用了。这里就详细介绍下如何使用
go module
导入本地包。前提
假设我们现在有
moduledemo
和mypackage
两个包,其中moduledemo
包中会导入mypackage
包并使用它的New
方法。mypackage/mypackage.go
内容如下:我们现在分两种情况讨论:
在同一个项目下
注意:在一个项目(project)下我们是可以定义多个包(package)的。
目录结构
现在的情况是,我们在
moduledemo/main.go
中调用了mypackage
这个包。导入包
这个时候,我们需要在
moduledemo/go.mod
中按如下定义:然后在
moduledemo/main.go
中按如下方式导入mypackage
举个例子
举一反三,假设我们现在有文件目录结构如下:
其中
bubble/go.mod
内容如下:bubble/dao/mysql.go
内容如下:bubble/main.go
内容如下:不在同一个项目下
目录结构
导入包
这个时候,
mypackage
也需要进行module初始化,即拥有一个属于自己的go.mod
文件,内容如下:然后我们在
moduledemo/main.go
中按如下方式导入:因为这两个包不在同一个项目路径下,你想要导入本地包,并且这些包也没有发布到远程的github或其他代码仓库地址。这个时候我们就需要在
go.mod
文件中使用replace
指令。在调用方也就是
moduledemo/go.mod
中按如下方式指定使用相对路径来寻找mypackage
这个包。举个例子
最后我们再举个例子巩固下上面的内容。
我们现在有文件目录结构如下:
p1/main.go
中想要导入p2.go
中定义的函数。p2/go.mod
内容如下:p1/main.go
中按如下方式导入因为我并没有把
liwenzhou.com/q1mi/p2
这个包上传到liwenzhou.com
这个网站,我们只是想导入本地的包,这个时候就需要用到replace
这个指令了。p1/go.mod
内容如下:此时,我们就可以正常编译
p1
这个项目了。- 作者:Guxi8086
- 链接:https://Guxi8086.com/article/1-9
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。