溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2021-05-10 16:52:46 來源:億速云 閱讀:1120 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關怎么在golang中使用 module導入本地包,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

golang適合做什么

golang可以做服務器端開發(fā),但golang很適合做日志處理、數(shù)據(jù)打包、虛擬機處理、數(shù)據(jù)庫代理等工作。在網(wǎng)絡編程方面,它還廣泛應用于web應用、API應用等領域。

mypackage/mypackage.go 內(nèi)容如下:

package mypackage
import "fmt"
func New(){
 fmt.Println("mypackage.New")
}

我們現(xiàn)在分兩種情況討論:

在同一個項目下

注意:在一個項目(project)下我們是可以定義多個包(package)的。

目錄結(jié)構(gòu)

現(xiàn)在的情況是,我們在 moduledemo/main.go 中調(diào)用了 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")
}

舉個例子

舉一反三,假設我們現(xiàn)在有文件目錄結(jié)構(gòu)如下:

└── bubble
    ├── dao
    │   └── mysql.go
    ├── go.mod
    └── main.go

其中 bubble/go.mod 內(nèi)容如下:

module github.com/q1mi/bubble

go 1.14

bubble/dao/mysql.go 內(nèi)容如下:

package dao
import "fmt"
func New(){
 fmt.Println("mypackage.New")
}

bubble/main.go 內(nèi)容如下:

package main

import (
 "fmt"
 "github.com/q1mi/bubble/dao"
)
func main() {
 dao.New()
 fmt.Println("main")
}

不在同一個項目下

目錄結(jié)構(gòu)

├── moduledemo
│   ├── go.mod
│   └── main.go
└── mypackage
    ├── go.mod
    └── mypackage.go

導入包

這個時候, mypackage 也需要進行module初始化,即擁有一個屬于自己的 go.mod 文件,內(nèi)容如下:

module mypackage

go 1.14

然后我們在 moduledemo/main.go 中按如下方式導入:

import (
 "fmt"
 "mypackage"
)
func main() {
 mypackage.New()
 fmt.Println("main")
}

因為這兩個包不在同一個項目路徑下,你想要導入本地包,并且這些包也沒有發(fā)布到遠程的github或其他代碼倉庫地址。這個時候我們就需要在 go.mod 文件中使用 replace 指令。

在調(diào)用方也就是 packagedemo/go.mod 中按如下方式指定使用相對路徑來尋找 mypackage 這個包。

module moduledemo
go 1.14
require "mypackage" v0.0.0
replace "mypackage" => "../mypackage"

舉個例子

最后我們再舉個例子鞏固下上面的內(nèi)容。

我們現(xiàn)在有文件目錄結(jié)構(gòu)如下:

├── p1
│   ├── go.mod
│   └── main.go
└── p2
    ├── go.mod
    └── p2.go

p1/main.go 中想要導入 p2.go 中定義的函數(shù)。

p2/go.mod 內(nèi)容如下:

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 這個網(wǎng)站,我們只是想導入本地的包,這個時候就需要用到 replace 這個指令了。

p1/go.mod 內(nèi)容如下:

module github.com/q1mi/p1
go 1.14
require "liwenzhou.com/q1mi/p2" v0.0.0
replace "liwenzhou.com/q1mi/p2" => "../p2"

以上就是怎么在golang中使用 module導入本地包,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI