Heim  >  Artikel  >  Backend-Entwicklung  >  Go-Importschleifen sind nicht zulässig

Go-Importschleifen sind nicht zulässig

PHPz
PHPznach vorne
2024-02-08 23:27:19635Durchsuche

不允许 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

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen