首頁 >後端開發 >Golang >不允許 Go 導入循環

不允許 Go 導入循環

PHPz
PHPz轉載
2024-02-08 23:27:19690瀏覽

不允许 Go 导入循环

php小編草莓在這裡為大家介紹一條重要的規則:在Go語言中,是不允許導入循環的。這意味著在編寫Go程式碼時,我們不能在導入的包中再次導入當前包。這樣的規定是為了避免循環依賴的問題,確保程式碼的可靠性和可維護性。如果我們在編寫程式碼時遇到了循環導入的情況,需要重新審視我們的程式碼架構,考慮是否需要進行重構來避免循環依賴的發生。遵守這個規則,我們能夠寫出更健壯、更可靠的Go程式碼。

問題內容

我是 go 的新手,正在學習 go。我想要這種資料夾結構,其中 model 是資料庫實體, 控制器是端點所在的位置, 服務是實際功能發生的地方。 (問題在於資料夾/套件結構)

Course
    --- Course.controler.go
    --- Course.model.go
    --- course.service.go

Faculty
    --- Faculty.controller.go
    --- Faculty.model.go
    --- Faculty.service.go

1 教師可以擁有 0..* 課程因此我透過導入教師包在這裡實現了外鍵

course.model.go

package course

import (
    "go-server/routes/faculty"

    "gorm.io/gorm"
)

type Course struct {
    gorm.Model
    Name        string          `json:"name"`
    Code        string          `json:"code" gorm:"unique;size:192"`
    Year        int             `json:"year"`
    Description string          `json:"description"`
    FacultyId   int             `json:"faculty"`
    Faculty     faculty.Faculty `gorm:"foreignKey:FacultyId"`
}

現在如果我在 course.service.go 中實作一個名為 GetCoursesForFacultyID(id) 的函數 由於導入週期,我無法在 faculty.service 上使用它。我該如何克服這個問題?

師資->課程->師資

解決方法

您需要使用不同的資料夾結構

Course
    --- Course.controler.go
    --- Course.service.go

Faculty
    --- Faculty.controller.go
    --- Faculty.service.go

Models
    --- Course.model.go
    --- Faculty.model.go

School
    --- Course.controler.go
    --- Course.model.go
    --- Course.service.go
    --- Faculty.controller.go
    --- Faculty.model.go
    --- Faculty.service.go

以上是不允許 Go 導入循環的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除