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中文网其他相关文章!