本篇文章给大家分享的是有关怎么在golang中使用 module导入本地包,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
golang可以做服务器端开发,但golang很适合做日志处理、数据打包、虚拟机处理、数据库代理等工作。在网络编程方面,它还广泛应用于web应用、API应用等领域。
mypackage/mypackage.go 内容如下:
package mypackage import "fmt" func New(){ fmt.Println("mypackage.New") }
我们现在分两种情况讨论:
在同一个项目下
注意:在一个项目(project)下我们是可以定义多个包(package)的。
目录结构
现在的情况是,我们在 moduledemo/main.go 中调用了 mypackage 这个包。
moduledemo ├── go.mod ├── main.go └── mypackage └── mypackage.go
导入包
这个时候,我们需要在 moduledemo/go.mod 中按如下定义:
module moduledemo
go 1.14
然后在 moduledemo/main.go 中按如下方式导入 mypackage
package main import ( "fmt" "moduledemo/mypackage" // 导入同一项目下的mypackage包 ) func main() { mypackage.New() fmt.Println("main") }
举个例子
举一反三,假设我们现在有文件目录结构如下:
└── bubble
├── dao
│ └── mysql.go
├── go.mod
└── main.go
其中 bubble/go.mod 内容如下:
module github.com/q1mi/bubble go 1.14
bubble/dao/mysql.go 内容如下:
package dao import "fmt" func New(){ fmt.Println("mypackage.New") }
bubble/main.go 内容如下:
package main import ( "fmt" "github.com/q1mi/bubble/dao" ) func main() { dao.New() fmt.Println("main") }
不在同一个项目下
目录结构
├── moduledemo
│ ├── go.mod
│ └── main.go
└── mypackage
├── go.mod
└── mypackage.go
导入包
这个时候, mypackage 也需要进行module初始化,即拥有一个属于自己的 go.mod 文件,内容如下:
module mypackage
go 1.14
然后我们在 moduledemo/main.go 中按如下方式导入:
import ( "fmt" "mypackage" ) func main() { mypackage.New() fmt.Println("main") }
因为这两个包不在同一个项目路径下,你想要导入本地包,并且这些包也没有发布到远程的github或其他代码仓库地址。这个时候我们就需要在 go.mod 文件中使用 replace 指令。
在调用方也就是 packagedemo/go.mod 中按如下方式指定使用相对路径来寻找 mypackage 这个包。
module moduledemo go 1.14 require "mypackage" v0.0.0 replace "mypackage" => "../mypackage"
举个例子
最后我们再举个例子巩固下上面的内容。
我们现在有文件目录结构如下:
├── p1
│ ├── go.mod
│ └── main.go
└── p2
├── go.mod
└── p2.go
p1/main.go 中想要导入 p2.go 中定义的函数。
p2/go.mod 内容如下:
module liwenzhou.com/q1mi/p2
go 1.14
p1/main.go 中按如下方式导入
import ( "fmt" "liwenzhou.com/q1mi/p2" ) func main() { p2.New() fmt.Println("main") }
因为我并没有把 liwenzhou.com/q1mi/p2 这个包上传到 liwenzhou.com 这个网站,我们只是想导入本地的包,这个时候就需要用到 replace 这个指令了。
p1/go.mod 内容如下:
module github.com/q1mi/p1
go 1.14
require "liwenzhou.com/q1mi/p2" v0.0.0
replace "liwenzhou.com/q1mi/p2" => "../p2"
以上就是怎么在golang中使用 module导入本地包,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。