假設我們現在有moduledemo和mypackage兩個包,其中moduledemo包中會匯入mypackage包並使用它的new方法。
mypackage/mypackage.go內容如下:
package mypackage
import
"fmt"
func
new(
)
現在分兩種情況討論:(1)同乙個專案;(2)不同專案;
注意:在乙個專案(project)下我們是可以定義多個包(package)的。現在的情況是,我們在moduledemo/main.go中呼叫了mypackage這個包。
moduledemo這個時候,我們需要在moduledemo/go.mod中按如下定義:├── go.mod
├── main.go
└── mypackage
└── mypackage.go
module moduledemo
go1.15
然後在moduledemo/main.go中按如下方式匯入mypackage
package main
import
("fmt"
"moduledemo/mypackage"
// 匯入同一專案下的mypackage包
)func
main()
假設我們現在有檔案目錄結構如下:
└── bubble其中bubble/go.mod內容如下:├── dao
│ └── mysql.go
├── go.mod
└── main.go
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"
現在有檔案目錄結構如下:
├── p1p1/main.go中想要匯入p2.go中定義的函式。│ ├── go.mod
│ └── main.go
└── p2
├── go.mod
└── 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 依賴庫使...