我有这个简单的项目结构
~/project/
|--my.corp
| |--a.go
|
|--main.go
|--go.mod
a.go的内容是
package a
// Add is cool
func Add(a int, b int) int {
return a + b
}
main.go的内容
package main
import (
"fmt"
"my.corp/a"
)
func main() {
fmt.Println("test")
fmt.Println(a.Add(5, 4))
}
go.mod的内容为
module my.corp/a
go 1.13
但是当我尝试在〜/ project中使用go run main.go
时,我会得到:
import cycle not allowed
package main
imports my.corp/a
imports my.corp/a
我想念什么?
答案 0 :(得分:1)
文件main.go被同一目录中的go.mod文件声明为位于软件包import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
...
@NgModule({
...
},
imports:[
BrowserAnimationsModule,
BsDropdownModule.forRoot()
],
....
})
中。文件main.go导入my.corp/a
,该文件包包含main.go。这是一个循环引用。
请注意,包含a.go的软件包的导入路径为my.corp/a
。
使用以下结构修复:
my.corp/a/mycorp
与此go.mod:
~/project/
|--a
| |--a.go
|
|--main.go
|--go.mod
通过此更改,包含main.go的软件包具有导入路径module my.corp
go 1.13
,而包含a.go的软件包具有导入路径my.corp
。