深度 处理 Golang 中的依赖循环 Go 不允许发生导入循环。 如果检测到任何导入循环,则会引发编译时错误。 通常导入周期被认为是一个糟糕的设计。 当包“a”依赖于“b”而“b”又依赖于“a”时,会导致导入循环。 下面的 Go 代码说明了导入循环的经典问题,也就是依赖循环。 package a import ( "fmt" "github.com/mantishK/dep/b" ) type A struct { } func ( a A ) PrintA () { fmt . Println ( a ) } func NewA () * A { a := new ( A ) return a } func RequireB () { o := b . NewB () o . PrintB () } package b import ( "fmt