欢迎光临散文网 会员登陆 & 注册

go package循环引用的产生和如何解决

2023-05-31 13:56 作者:误入歧途的先森  | 我要投稿

    我们在日常Go项目开发的时候,随着项目的需求越来越多,内容量也是越来越多,会导致包与包之间难免有很多依赖关系。

    简单用图来表示就是:

P1与P2互相依赖
A B C之间循环依赖

下面 我们来看一个相互依赖的包代码实例:

                        run.go

                A.go

        C.go

B.go

遇到这种情况我们如何来处理这种互相依赖的问题呢。这边总结了三种解决办法:

1 将引用的包内信息,通过引入interface 改变循环依赖的问题:

2 将一些基础需要使用的结构体,单独放到不需要引用其他除基础包之外的包里

3 最不建议的 通过go:linkname的注释来避免导入包

其中第二种是比较推荐,也是实际工作中最方便的,因为实际生产中的依赖特别复杂,有时候第一种实现起来很麻烦,第三种也是最不推荐的。具体如何操作我在我自己的视频里做了具体如何实现。


go package循环引用的产生和如何解决的评论 (共 条)

分享到微博请遵守国家法律