Heim >Backend-Entwicklung >Golang >Go-Importschleifen sind nicht zulässig
php-Editor Strawberry ist hier, um Ihnen eine wichtige Regel vorzustellen: In der Go-Sprache ist das Importieren von Schleifen nicht erlaubt. Das bedeutet, dass wir beim Schreiben von Go-Code das aktuelle Paket nicht erneut innerhalb des importierten Pakets importieren können. Diese Bestimmung soll das Problem zirkulärer Abhängigkeiten vermeiden und die Zuverlässigkeit und Wartbarkeit des Codes gewährleisten. Wenn wir beim Schreiben von Code auf eine zirkuläre Importsituation stoßen, müssen wir unsere Codestruktur erneut überprüfen und überlegen, ob wir eine Umgestaltung vornehmen müssen, um das Auftreten zirkulärer Abhängigkeiten zu vermeiden. Indem wir diese Regel befolgen, können wir robusteren und zuverlässigeren Go-Code schreiben.
Ich bin go
的新手,正在学习 go
. Ich möchte diese Ordnerstruktur, in der model die Datenbankentität ist,
Controller ist der Endpunkt,
Dienste sind der Ort, an dem die eigentliche Funktionalität stattfindet.
(Das Problem ist die Ordner-/Paketstruktur)
Course --- Course.controler.go --- Course.model.go --- course.service.go Faculty --- Faculty.controller.go --- Faculty.model.go --- Faculty.service.go
1 Lehrer kann 0..*-Kurse haben, daher habe ich den Fremdschlüssel hier implementiert, indem ich das Lehrerpaket importiert habe
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"` }
Wenn ich nun in der Funktion von course.service.go
中实现一个名为 GetCoursesForFacultyID(id)
bin
Ich kann es aufgrund des Importzyklus nicht auf faculty.service
verwenden. Wie kann ich dieses Problem überwinden?
Fakultät->Kurse->Fakultät
Sie müssen eine andere Ordnerstruktur verwenden
Course --- Course.controler.go --- Course.service.go Faculty --- Faculty.controller.go --- Faculty.service.go Models --- Course.model.go --- Faculty.model.go
oder
School --- Course.controler.go --- Course.model.go --- Course.service.go --- Faculty.controller.go --- Faculty.model.go --- Faculty.service.go
Das obige ist der detaillierte Inhalt vonGo-Importschleifen sind nicht zulässig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!