3分钟带你掌握 go mod 导入本地包
文章目录
对于一个项目来说,不可能所有代码都自己写。
所以这就涉及到引入别人的代码,得有效避免重复造轮子,在 Go 语言里面,这个操作也叫引包。
Go 语言诞生之后,升级了很多次一直都没有官方的包管理工具。
一直到 1.11 版才出现 go module 这个官方的管理工具。
于是现在的大部分 Go 语言新项目都在使用 go module 来进行包管理。
我们用得非常多的是使用 go module 引入 Github 上的包,直接 go get
就搞定了。
但是如何引入本地的包呢?
一、引入的包在同一项目下
在实际开发中,这是我们最见的场景。
一般情况下我们在项目的目录下面,会建很多的包,他们并不冲突,比如下面结构图中的:instance
,kun-package
。
|
|
如果你想在 main.go 里面想要使用kun-package
包里面的代码,你只需要初始化 go module 即可,他会自动生成类似以下内容的 go.mod 文件:
|
|
这是两个关键信息:
第一行是我们的这个总包的名字。
你可以理解为,我们新建的 go 项目其实也就是一个大包。
然后你会发现我在引入本地的包时,前面的包名就是这个名字:
|
|
看到 kun-package 前面的 design 了么?
举一反三,如果你修改了 go.mod 里面的第一行为 github.com/golangstackdev
那你项目里 main.go 文件里面的引入也就得变成 github.com/golangstackdev/kun-package
。
go.mod 里面第二行是设定我们当前环境的 go 版本,也就是最小版本支持。
二、不在同一项目下面
其实难免我们要引用的包,是别人项目下面的,而不是自己项目下面的。
我们先来看一个项目结构图:
|
|
我们的工程01
(project01)下面新建了一个 main.go ;
同时在工程01
所在目录,我们还有一个工程02
(project02)。
工程01
里面需要使用的工程02
里面的包。
这个时候,要想完成引用的话:被引用的包和使用的工程都要有各自独立的 go.mod 文件。
project02/kun-package/go.mod
内容非常简单,就是基础的两行:
|
|
而 project01/go.mod
里面就比较复杂了,需要做两步操作:
|
|
require 是声明我们引入的包名和版本。
replace 是进行替换对于的包指向路径。
非常容易理解!
然后我们在project01/main.go
文件里面就可以正常的使用了:
|
|
文章作者 锟哥
上次更新 2022-04-12
许可协议 CC BY-NC-ND 4.0(如需转载,请在评论区留下您作品的地址,无需等待确认)
原文连接 https://blog.golangstack.com/post/go-mod-import-local-package/
关注我们的微信公众号,第一时间查看最新内容