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中文網其他相關文章!