不允许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
。您是否可以使用上的“多文件”功能提供一个可运行的问题示例?谢谢您的帮助。最后,我想我理解了导入路径的全部内容。*竖起大拇指*