問題:
如何使用「內部」套件有效地組織 Go代碼?
初始問題:
儘管將項目放在GOPATH 之外,但從main.go 導入內部包會失敗,除非使用相對路徑(例如“ ./internal/foo|bar”)。
模組介紹:
隨著Go中模組的介紹v1.11 以上版本,不再需要將項目放入 $GOPATH/src 中。相反,您需要建立一個 go.mod 檔案來指定每個模組的位置。
範例:
考慮以下項目結構:
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod:
go.mod >內部包的go.mod檔案很簡單:module bar go 1.14
module foo go 1.14
內部套件中的程式碼:
// bar.go package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") } // foo.go package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go:
// main.go package main import ( "internal/bar" "internal/foo" ) func main() { bar.Bar() foo.Foo() }
main.go:
main.go:module project go 1.14 require internal/bar v1.0.0 replace internal/bar => ./internal/bar require internal/foo v1.0.0 replace internal/foo => ./internal/foo
項目go.mod檔:
require 部分的名稱是供Go 內部使用,可以任意。 require 部分的版本號在此上下文中並不重要。
替換行指定 Go 可以在哪裡找到內部套件。
Hello from Bar Hello from Foo
執行:現在將運行main.go 檔案print:這個範例示範如何使用模組在Go專案中有效地使用內部包。
以上是如何使用帶有模組的內部套件來有效組織Go程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!