怎么在golang中使用module导入本地包

本篇文章给大家分享的是有关怎么在golang中使用 module导入本地包,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联公司-专业网站定制、快速模板网站建设、高性价比鄂城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式鄂城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖鄂城地区。费用合理售后完善,10年实体公司更值得信赖。

golang适合做什么

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导入本地包,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。

本文题目:怎么在golang中使用module导入本地包
标题URL:https://www.cdcxhl.com/article32/jghhsc.html

成都网站建设公司_创新互联,为您提供手机网站建设品牌网站建设服务器托管品牌网站设计响应式网站面包屑导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设