假设您有一个mypack
包含两个源文件mypack/a.go
和mypack/b.go
. 这两个源文件相互依赖,但 Go 编译器不会报错。如果你将该包分成两个,apack/a.go
和bpack/b.go
,Go 编译器会说import cycle not allowed
。
我对如何处理包依赖关系的理解是,编译器将构建一个导入图。对图表进行了分析,并以某种方式(我很想了解执行此操作的算法!)计算了编译顺序。如果图中有环,则无法计算顺序,因此编译器会报错。
我不明白的是 Go 编译器如何能够解决包源之间的依赖关系但无法解决包之间的依赖关系。如果这两个来源相互依赖,那么你必须做一些疯狂的杂技并以某种方式同时编译它们。
有人可以帮我解决这个问题吗?
回首忆惘然
慕标5832272
相关分类