20210131循环引用的一个小问题 - ziyouzy/2021blog GitHub Wiki

例子其实举的不太好:

https://blog.csdn.net/icebergliu1234/article/details/104409542

不过文章的最后几句说的很好:
理解一下就是:

A.go 调用 B.go 中的函数, B.go中的函数又调用了 A.go中的函数,那么就把A.go中的函数作为参数传入B.go的函数中

作为Callback 类型的参数传入之后,转换为地址,然后再转换成string,再转换成十进制数字,再转换成函数指针

然后执行调用

很晦涩。。。

这里所探讨的问题仅仅限于两个包之间的函数交叉调用,并没有设计到相互之间某个对象作为参数表参数的相互调用,以及a->b,b->c,c->d,d->a这样形成“圈”的情况

个人觉得仅仅是a->b,b->a这样的情况还是需要优化下设计思路,让两个包之间实现更完善的上下层关系,而不是强行把一个包内的函数转化为变量来供另一个包使用

不过把一个函数转化为一个函数类型,也确实是一种微观上的设计模式,以后要更加灵活熟练的去运用他

同时文章中也涉及到了针对golang的回调函数的概念,以后也要多留意回调函数的使用场景与设计模式