首頁 > 後端開發 > Golang > 主體

Go 套件結構:我們是否需要 `package.go` 文件,如何匯入內部文件,以及我們可以跨文件存取類型嗎?

Barbara Streisand
發布: 2024-11-26 04:04:08
原創
419 人瀏覽過

Go Package Structure: Do We Need a `package.go` File, How to Import Internal Files, and Can We Access Types Across Files?

Go 語言包結構:深入解說

使用 Go 時,遵守既定約定至關重要。然而,在有效實施之前,理解這些約定至關重要。本文解決了有關 Go 包結構的常見問題。

問題

設定:依照建議的項目結構,我們有:

$GOPATH/
  src/
    github.com/
      username/
        projectname/
          main.go
          numbers/
            rational.go
            real.go
            complex.go
登入後複製

ma in.go:

package main

import (
  "fmt"
  "./numbers"
)

func main() {
  fmt.Println(numbers.Real{2.0})
}
登入後複製

問題:

  • 我們需要嗎每個包裝資料夾中都有一個package.go 檔?
  • 我們要如何匯入其中的檔案Numbers.go 中的同一個套件?
  • 我們可以在 real.go 中定義像 Real 這樣的類型,並在 main.go 中以 fmt.Println(numbers.Real{2.0}) 的形式存取它們嗎?

回答

1。 package.go 檔案

每個套件目錄都需要一個 package.go 檔案的假設是不正確的。在 Go 中,單一目錄中的檔案會自動分組到一個套件中。不需要建立package.go檔。

2.匯入套件內的檔案

Go 不支援匯入檔案。應直接匯入包號,而不是像rational.go、real.go和complex.go這樣的單獨檔案。在我們的範例中,刪除./ 前綴並使用import "github.com/username/projectname/numbers".

3.共用類型

像Real 這樣的類型應該定義在套件內的檔案中,例如real.go。由於這些檔案屬於同一個套件,因此不需要額外的導入語句。在 main.go 中存取 Real 類型為 fmt.Println(numbers.Real{2.0}) 是正確的。

以上是Go 套件結構:我們是否需要 `package.go` 文件,如何匯入內部文件,以及我們可以跨文件存取類型嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板