Go-Importschleifen sind nicht zulässig

PHPz
Freigeben: 2024-02-08 23:27:19
nach vorne
655 Leute haben es durchsucht

不允许 Go 导入循环

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.

Frageninhalt

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
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

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

Lösung

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
Nach dem Login kopieren

oder

School
    --- Course.controler.go
    --- Course.model.go
    --- Course.service.go
    --- Faculty.controller.go
    --- Faculty.model.go
    --- Faculty.service.go
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!