Golang包导入周期不允许

时间:2020-06-06 20:23:13

标签: go

我有这个简单的项目结构

~/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

我想念什么?

1 个答案:

答案 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

Run it on the playground