首頁 >後端開發 >Golang >如何使用帶有模組的內部套件來有效組織Go程式碼?

如何使用帶有模組的內部套件來有效組織Go程式碼?

Susan Sarandon
Susan Sarandon原創
2024-12-25 14:12:24894瀏覽

How to Effectively Organize Go Code Using Internal Packages with Modules?

了解內部套件及其用法

問題:

如何使用「內部」套件有效地組織 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檔:

    項目go.mod 檔案通知Go 內部包及其位置的資訊:
  • 重要說明:

require 部分的名稱是供Go 內部使用,可以任意。 require 部分的版本號在此上下文中並不重要。

替換行指定 Go 可以在哪裡找到內部套件。

Hello from Bar
Hello from Foo

執行:現在將運行main.go 檔案print:這個範例示範如何使用模組在Go專案中有效地使用內部包。

以上是如何使用帶有模組的內部套件來有效組織Go程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn