go-cyclic 循环依赖解决工具

  • 问题描述
    • 什么时候会出现循环依赖?
  • go-cyclic 简单用法
    • 快速开始

问题描述

作为一个 Go 开发者,经常会在大型项目中遇到包的循环依赖问题。
      如果 Golang 出现循环依赖,那么会在编译时抛出异常。

什么时候会出现循环依赖?

如果有两个包:package a 和 package b。当在包a依赖包b,包b依赖包a时,就会产生循环依赖。真实情况可能会更复杂一些。例如,如包a依赖包b,包b依赖包c,包c又依赖包a时,形成一个环。

import cycle not allowed

而且如果项目很大的时候,一个包下面有很多 .go 文件,只提示包与包的循环引用(如上图),是很难定位到哪个 .go 文件和哪个 .go 文件直接进行了循环引用,难以排查。

go-cyclic 简单用法

github地址:https://github.com/elza2/go-cyclic (欢迎各位大佬提 pr)

go-cyclic 可以用来检查项目是否存在循环依赖,并且可以定位到具体的 .go 文件。帮助快速定位循环问题。

快速开始

go install github.com/elza2/go-cyclic@latest
# path 路径要设置为 go.mod 文件所在的路径.
go-cyclic gocyclic --dir .path
# success output.
Success. Not circular dependence.# failed output.
Failed. 1 circular dependence chains were found.┌---→    app.go
┆          ↓
┆       routes.go
┆          ↓
└---    handler.go

Go 中的循环依赖检测工具 —— go-cyclic相关推荐

  1. Unity3d+GameFramework:资源分析,资源依赖,循环依赖检测

    资源依赖 先生成Resource 根据ResourceCollection.xml Resource resource = Resource.Create(name, variant, fileSys ...

  2. 面试:讲一讲Spring中的循环依赖

    前言 Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶的问题,那么循环依赖必定逃 ...

  3. spring自动装配依赖包_解决Spring自动装配中的循环依赖

    spring自动装配依赖包 我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践. 使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加. 服务层中的每个服务可能会消耗其他服 ...

  4. 解决Spring自动装配中的循环依赖

    我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践. 使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加. 服务层中的每个服务可能会消耗其他服务,这些服务将通过@Auto ...

  5. 面试必杀技,讲一讲Spring中的循环依赖

    本系列文章: 听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configu ...

  6. Spring中的循环依赖

    目录 一.什么是循环依赖? 二.Bean的生命周期 2.1 Spring Bean 的生命周期 2.2 Bean 的生成步骤 三.三级缓存 3.1三个缓存分别有什么作用 四.思路分析 4.1 为什么 ...

  7. 一起来踩踩 Spring 中这个循环依赖的坑!

    作者:Mythsman blog.mythsman.com/post/5d838c7c2db8a452e9b7082c/ 1. 前言 2. 典型场景 3. 什么是依赖 4. 什么是依赖调解 5. 为什 ...

  8. Spring中的循环依赖及解决,2021Java精选面试实战总结整理

    那么在创建B类的Bean的过程中,如果B类中存在一个A类的a属性,那么在创建B的Bean的过程中就需要A类对应的Bean,但是,触发B类Bean的创建的条件是A类Bean在创建过程中的依赖注入,所以这 ...

  9. java 循环依赖_java – 如何在Gradle中解决循环依赖

    我正在将Java项目从Ant迁移到Gradle.我认为最好的解决方案是使用Gradle的多项目支持,但我找不到摆脱循环依赖的方法. 原始项目设置为具有以下布局: - project/ - common ...

最新文章

  1. jpgraph中文使用手册之文本和字体控制教程
  2. “斐波那契数列”的两种算法
  3. 天津大学计算机考研真题,天津大学计算机科学与技术考研真题
  4. 【EI/Scopus检索】第六届电子技术与信息科学国际学术会议诚邀您投稿参会!
  5. C++11 多线程 基础
  6. Linux对象文件是个啥东东
  7. 直播将是所有企业必须做的
  8. python连接数据库mysql失败_解决python连接mysql报错问题
  9. JSON数据写入和解析
  10. 【python快速入门】—唐宇迪课程笔记
  11. Js中字符串转Json与Json对象转字符串
  12. sha256是什么算法,sha256的安全性,sha256算法详解
  13. 小乌龟SVN合并分支到主干、合并主干到分支,工具操作
  14. 一个完整的性能测试流程
  15. python 中英文 分离_利用Python将文本中的中英文分离方法
  16. 网页端下载喜马拉雅音频
  17. 大组合数取模hdu5698 瞬间移动
  18. android adb 模拟长按,adb 模拟长按电源键
  19. 渗透H5棋牌游戏-棋牌游戏开发
  20. 看完这个,你还觉得SOME/IP测试难吗?

热门文章

  1. 美斯坦福大学成立以人为本AI研究院,李飞飞将领导
  2. 卓胜微:国产替代泡沫破灭
  3. 一个好锅,等于拥有一个家庭的灵魂~
  4. OFDM中分析不同频偏(CFO)对通信链路的误码率影响仿真分析
  5. 【关于游戏中多人交互业务无回调写法的2种方案】1.xdb 2.world服+只读redis+队列
  6. 论文阅读笔记-后门攻击及防御
  7. 质量小议22 -- 多少分合适
  8. csdn简单设置字体颜色
  9. Python学习之np.random.normal()函数
  10. 你真的知道css三种存在样式(外联样式、内部样式、内联样式)的区别吗?