首页 > 后端开发 > Golang > 正文

不允许 Go 导入循环

PHPz
发布: 2024-02-08 23:27:19
转载
749人浏览过

不允许 go 导入循环

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 上使用它。我该如何克服这个问题?

师资->课程->师资

允许自动检索的下拉框
允许自动检索的下拉框

允许自动检索的下拉框

允许自动检索的下拉框 23
查看详情 允许自动检索的下拉框

解决方法

您需要使用不同的文件夹结构

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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号