3分钟带你掌握 go mod 导入本地包

您所在的位置:网站首页 steam上的mod导入到本地 3分钟带你掌握 go mod 导入本地包

3分钟带你掌握 go mod 导入本地包

2024-07-13 10:19| 来源: 网络整理| 查看: 265

对于一个项目来说,不可能所有代码都自己写。

所以这就涉及到引入别人的代码,得有效避免重复造轮子,在 Go 语言里面,这个操作也叫引包。

Go 语言诞生之后,升级了很多次一直都没有官方的包管理工具。

一直到 1.11 版才出现 go module 这个官方的管理工具。

于是现在的大部分 Go 语言新项目都在使用 go module 来进行包管理。

我们用得非常多的是使用 go module 引入 Github 上的包,直接 go get 就搞定了。

但是如何引入本地的包呢?

一、引入的包在同一项目下

在实际开发中,这是我们最见的场景。

一般情况下我们在项目的目录下面,会建很多的包,他们并不冲突,比如下面结构图中的:instance,kun-package。

代码语言:javascript复制. ├── main.go ├── go.mod ├── instance │ └── UserInstance.go └── kun-package └── Hello.go

如果你想在 main.go 里面想要使用kun-package 包里面的代码,你只需要初始化 go module 即可,他会自动生成类似以下内容的 go.mod 文件:

代码语言:javascript复制module design go 1.17

这是两个关键信息:

第一行是我们的这个总包的名字。

你可以理解为,我们新建的 go 项目其实也就是一个大包。

然后你会发现我在引入本地的包时,前面的包名就是这个名字:

代码语言:javascript复制package main import ( kunPackage "design/kun-package" "fmt" ) func main() { fmt.Println("hello world") kunPackage.SayHello() }

看到 kun-package 前面的 design 了么?

举一反三,如果你修改了 go.mod 里面的第一行为 github.com/golangstackdev 那你项目里 main.go 文件里面的引入也就得变成 github.com/golangstackdev/kun-package。

go.mod 里面第二行是设定我们当前环境的 go 版本,也就是最小版本支持。

二、不在同一项目下面

其实难免我们要引用的包,是别人项目下面的,而不是自己项目下面的。

我们先来看一个项目结构图:

代码语言:javascript复制project01 ├── go.mod └── main.go project02 └── kun-package ├── go.mod └── hello.go

我们的工程01(project01)下面新建了一个 main.go ;

同时在工程01所在目录,我们还有一个工程02(project02)。

工程01里面需要使用的工程02里面的包。

这个时候,要想完成引用的话:被引用的包和使用的工程都要有各自独立的 go.mod 文件。

project02/kun-package/go.mod 内容非常简单,就是基础的两行:

代码语言:javascript复制module kun-package go 1.17

而 project01/go.mod 里面就比较复杂了,需要做两步操作:

代码语言:javascript复制module project01 go 1.17 require kun-package v0.0.0 replace kun-package => ../project02/kun-package

require 是声明我们引入的包名和版本。

replace 是进行替换对于的包指向路径。

非常容易理解!

然后我们在project01/main.go 文件里面就可以正常的使用了:

代码语言:javascript复制package main import ( kunPackage "kun-package" ) func main() { kunPackage.SayHello() }

你学废了么?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3