首頁 > 後端開發 > Golang > 為什麼從子資料夾匯入檔案會導致 Go 中出現「未定義」錯誤,如何使用 Go Modules 來解決該錯誤,同時保持模組化專案結構?

為什麼從子資料夾匯入檔案會導致 Go 中出現「未定義」錯誤,如何使用 Go Modules 來解決該錯誤,同時保持模組化專案結構?

Linda Hamilton
發布: 2024-11-15 11:56:02
原創
361 人瀏覽過

Why does importing a file from a subfolder result in an

利用Go 模組透過子資料夾建構專案

導覽
我們希望設計具有以下結構的專案:

├── main.go
└── models
    └── user.go
登入後複製

我們希望設計具有以下結構的專案:

在此佈局中,main.go 匯入了user.go 文件,該文件定義了User 類型。然而,編譯器警告主包中未定義 User。

問題

為什麼會出現此錯誤,以及我們如何在保持模組化專案結構的同時解決它?

解答

問題源自於專案中缺少模組定義。在 Go 1.11.1 之前,Go 依賴 $GOPATH 環境變量,這在管理專案依賴項方面帶來了複雜性。

Go 模組,在 Go 1.11.1 中引入並在 Go 1.11.3 中預設啟用,位址這個問題。透過啟用模組(透過 GO111MODULE=on 環境變數),我們可以建立具有版本化依賴關係和分層組織的模組化專案。

解決方案
  1. 要利用Go 模組,請依照下列步驟操作:

      建立一個go.mod檔:
  2. 新增模組定義模組名稱,在本例中為main。
如下建立您的專案:
/Users/myuser/Projects/my-project/
├── go.mod
├── main.go
└── src/
    └── models/
        └── user.go
登入後複製
  1. package main
    
    import (
     "fmt"
     "main/src/models/user"
    )
    
    func main() {
     fmt.Println(user.User{"new_user"})
    }
    登入後複製
  2. 1 go進去main.go:

    在main.go 中使用import "main/src/models/user" 匯入user.go 檔案。
    package user
    
    type User struct {
     Login string
    }
    登入後複製

樣本main.go:例如🎜>這個結構讓我們可以將User 類型從models/user.go 檔案匯入到main.go 檔案中。 go.mod 檔案定義模組名稱並作為專案的根目錄。

以上是為什麼從子資料夾匯入檔案會導致 Go 中出現「未定義」錯誤,如何使用 Go Modules 來解決該錯誤,同時保持模組化專案結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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