不允许Golang包导入周期

不允许Golang包导入周期,go,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("te

我有这个简单的项目结构

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

我缺少什么?

文件main.go被同一目录中的go.mod文件声明为在package
my.corp/a
中。main.go文件导入包含main.go的包
my.corp/a
。这是循环引用

请注意,包含a.go的包的导入路径是
my.corp/a/mycorp

使用此结构进行修复:

~/project/
|--a
|  |--a.go
|
|--main.go
|--go.mod
使用这个go.mod:

module my.corp

go 1.13
通过此更改,包含main.go的包具有导入路径
my.corp
,而包含a.go的包具有导入路径
my.corp/a


尤其是对于go.mod版本,不要使用
go run
。请改用
go build
。您是否可以使用上的“多文件”功能提供一个可运行的问题示例?谢谢您的帮助。最后,我想我理解了导入路径的全部内容。*竖起大拇指*