4 使用Go module匯入本地包

2021-10-11 03:54:51 字數 2819 閱讀 3240

假設我們現在有moduledemo和mypackage兩個包,其中moduledemo包中會匯入mypackage包並使用它的new方法。

mypackage/mypackage.go內容如下:

package mypackage

import

"fmt"

func

new(

)

現在分兩種情況討論:(1)同乙個專案;(2)不同專案;

注意:在乙個專案(project)下我們是可以定義多個包(package)的。

現在的情況是,我們在moduledemo/main.go中呼叫了mypackage這個包。

moduledemo

├── go.mod

├── main.go

└── mypackage

└── mypackage.go

這個時候,我們需要在moduledemo/go.mod中按如下定義:

module moduledemo

go1.15

然後在moduledemo/main.go中按如下方式匯入mypackage

package main

import

("fmt"

"moduledemo/mypackage"

// 匯入同一專案下的mypackage包

)func

main()

假設我們現在有檔案目錄結構如下:

└── bubble

├── dao

│   └── mysql.go

├── go.mod

└── main.go

其中bubble/go.mod內容如下:

go1.14bubble/dao/mysql.go內容如下:

package dao

import

"fmt"

func

new(

)

bubble/main.go內容如下:

這個時候,mypackage也需要進行module初始化,即擁有乙個屬於自己的go.mod檔案,內容如下:

module mypackage

go1.14

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

import

("fmt"

"mypackage"

)func

main()

因為這兩個包不在同乙個專案路徑下,你想要匯入本地包,並且這些包也沒有發布到遠端的github或其他**倉庫位址。這個時候我們就需要在go.mod檔案中使用replace指令。

在呼叫方也就是moduledemo/go.mod中按如下方式指定使用相對路徑來尋找mypackage這個包。

module moduledemo

go1.14

require "mypackage" v0.

0.0replace "mypackage"

=>

"../mypackage"

現在有檔案目錄結構如下:

├── p1

│   ├── go.mod

│   └── main.go

└── p2

├── go.mod

└── p2.go

p1/main.go中想要匯入p2.go中定義的函式。

p2/go.mod內容如下:

go1.14p1/main.go中按如下方式匯入

因為沒有把xiaoliu.com/q1mi/p2這個包上傳到xiaoliu.com這個**,我們只是想匯入本地的包,這個時候就需要用到replace這個指令了。

p1/go.mod內容如下:

"../p2"此時,我們就可以正常編譯p1這個專案了。

返回主目錄

說明:文章參考於李文周老師筆記(看詳細內容請檢視源筆記)

使用go module匯入本地包的方法教程詳解

go module 是go1.11版本之後官方推出的版本管理工具,並且從 go1.13 版本開始,go module 將是go語言預設的依賴管理工具。到今天 go1.14 版本推出之後 go modules 功能已經被正式推薦在生產環境下使用了。這幾天已經有很多教程講解如何使用 go module ...

go module呼叫本地包

1 目錄結構 demo p1 p11 p11.go main.go go.mod p2 p2.go go.mod2 p2.go原始碼 package p2 import fmt const name bob new 首字母大寫,供外部呼叫 func new 3 p11.go原始碼 package p...

go module匯入gitlab私有庫

gitlab private subgroup go get go module goproxy direct 表示 走不通時,使用直接連線 go env w goproxy 2 設定私有庫 go env w goprivate github.com myprivate gitlab.ce 依賴庫使...