Golang中 import cycle not allowed 问题的解决方法
作者:峰啊疯了 发布时间:2024-04-25 15:13:38
标签:Golang,import,cycle,not,allowed,问题,解决,方法
1.问题现象
go编译的时候报错import cycle not allowed
cycle
意思很简单就是循环的意思。代表的就是一个包被循环的导入。
2.问题分析
这个错是在container_cloud/pkg/service
这里出现的,说明这个包被循环导入。
可是service
这个包文件太多怎么检查呢?
可以看到这个service
包下面的文件特别多。
3.解决问题思路
虽然文件很多,但是看自己最近修改过的文件很少。
检查发现这两个文件是修改过的
然后看文件的头部的修改记录,不知道怎么看修改记录的可以回滚,只要文件没有提交就可以看到
4.如何破除依赖
检查发现是service
调用了mapper的数据库方法,然后mapper里面用到service的一个对象
这种做法是特别不规范的。我们需要做的就是把这个对象拷贝一份,放到其他包里面
放到domain
这个包下,于是依赖解除。
5.问题回顾
刚刚的情况就类似于这种。
如果A必须调用B中的函数,那么我们就破除B对A的依赖,把对A的那部分提出来就行啦,就像刚刚小编不小心在mapper
当中去用
service
的对象。只能service
调用mapper
的函数
就像这种就不会有循环啦。
来源:https://blog.51cto.com/u_12040959/5140229


猜你喜欢
- 为了在 Python 中快速构建 API,我主要依赖于 Flask 。最近我遇到了一个名为 “API Star” 的基于 Python 3
- 1. 简介大家都知道,在数据库中间件读写分离应用场景中,如何保证底层数据库出现故障节点的时,中间件可以快速断开或迁移数据库连接,让用户无感知
- 忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串。相信不少同学会有同感。几乎任何一种编程语言,都把字符串列为最
- 本文实例讲述了CI操作cookie的方法。分享给大家供大家参考,具体如下:CI 操作cookie 有三种方法,2中Ci自带的,其
- 背景:在需求开发过程中,有的接口返回的结果中有很多字段需要展示到页面上。通常可以将这些字段在.vue文件中封装为计算属性,或者重新将对应字段
- 请求钩子通过装饰器为一个模块添加请求钩子, 对当前模块的请求进行额外的处理. 比如权限验证.说白了,就是在执行视图函数前后你可以进行一些处理
- golang 最吸引人的地方可能就是并发了,无论代码的编写上,还是性能上面,golang 都有绝对的优势学习一个语言的并发特性,我喜欢实现一
- 前言21世纪是信息的世纪,综合国力的竞争在很大程度上是信息的竞争,更是信息利用率的竞争。近年来,随着“数字地球”和“数字国土”战略的提出和实
- 用扩展名判断文件格式非常简单,但是有可能是错误的。 jpeg文件有固定的文件头,其文件头的格式如下:Start Marker | JFIF
- 本文实例讲述了python实现指定字符串补全空格的方法。分享给大家供大家参考。具体分析如下:如果希望字符串的长度固定,给定的字符串又不够长度
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️色彩空间概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天
- 前言NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自
- 本文实例讲述了Python设计模式之观察者模式。分享给大家供大家参考,具体如下:观察者模式是一个软件设计模式,一个主题对象包涵一系列依赖他的
- 细节汇总函数的形参列表可以是多个,返回值列表也可以是多个形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型函数的命名遵循标识符命
- 目录十大经典的排序算法 一、交换排序1、冒泡排序(前后比较-交换)2、快速排序(选取一个基准值,小数在左大数在右)二、插入排序1、
- 这篇文章主要介绍了微信小程序封装多张图片上传api代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 使用索引优化索引是数据库优化最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。数据准备use wor
- 反射是语言里面是非常重要的一个特性,我们经常会看见这个词,但是对于反射没有一个很好的理解,主要是因为对于反射的使用场景不太熟悉。一、理解变量
- 一、auth模块# 创建超级用户python manage.py createsuperuserfrom django.contrib im
- 最近工作上有个需求,当爬虫程序遇到异常的时候,需要通知相应的人员进行修复。如果是国外可能是通过邮件的方式来通知,但国内除了万年不变的 qq