golang包循环引用的几种解决方案

本文探讨了在Golang中如何解决包循环引用的问题。提出了四种策略:创建公共接口包来抽象接口,建立公共组合包以组合调用,使用全局回调管理器存储依赖函数,以及利用事件总线实现解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://libuba.com/2020/11/02/golang%e5%8c%85%e5%be%aa%e7%8e%af%e5%bc%95%e7%94%a8%e7%9a%84%e5%87%a0%e7%a7%8d%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/

一、前言

golang为了加速编译,不允许包循环引用。通常来说,只要你的包规划得好,严格规范单向调用链(如控制层->业务层->数据层),一般不会出现包循环引用问题。当然现实业务往往不会这么理想,同层级之间的不同包经常需要互相引用,下面我就分享几种解决包循环引用的方案。

二、新建公共接口包(父包),将需要循环调用的函数或方法抽象为接口

  • package_i
package package_i
 
type PackageAInterface interface {
	PrintA()
}
 
type PackageBInterface interface {
	PrintB()
}
  • package_a
package package_a
 
import (
	"cycle/package_i"
	"fmt"
)
 
type PackageA struct {
	B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值