3分钟带你掌握 go mod 导入本地包 |
您所在的位置:网站首页 › steam上的mod导入到本地 › 3分钟带你掌握 go mod 导入本地包 |
![]() 对于一个项目来说,不可能所有代码都自己写。 所以这就涉及到引入别人的代码,得有效避免重复造轮子,在 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-packagerequire 是声明我们引入的包名和版本。 replace 是进行替换对于的包指向路径。 非常容易理解! 然后我们在project01/main.go 文件里面就可以正常的使用了: 代码语言:javascript复制package main import ( kunPackage "kun-package" ) func main() { kunPackage.SayHello() }你学废了么? |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |