1.同目录下仅main.go所在目录下文件导包
测试的目录文件结构如下:
+--- demo
| +--- demo1
| | +--- demo1.go
| | +--- demo2
| | | +--- demo2.go
| +--- go.mod
| +--- main.go
为了测试需要,在demo2.go/demo1.go/main.go分别简单写了如下代码:
// main.go
package main
import (
"demo/demo1"
"fmt"
)
func main() {
fmt.Println("demo-main()")
demo1.New()
}
// demo1.go
package demo1
import (
"demo/demo1/demo2" //
"fmt"
)
func New() {
fmt.Println("demo-demo1-New()")
demo2.Demo2()
}
// demo2.go
package demo2
import "fmt"
func Demo2() {
fmt.Println("demo-demo1-demo2()")
}
由于导入本地包,可以不用设置main.go同目录下的go.mod,
// go.mod
module demo
go 1.16
运行main.go,调用成功
go run main.go
/*
demo-main()
demo-demo1-New()
demo-demo1-demo2()
*/
2.同目录下导入目录-go.mod
由于现在普遍使用go.mod管理包依赖,如果在项目目录下有其他包,建议在go.mod添加一下replace
// go.mod
...
replace (
project/subDir => ../project/subDir
)
// 如果有必要,将以下加入
require (
project v0.0.0
)
...
一般go mod tidy
可解决导入报红的问题。
3.同项目目录下到包-包中带go.mod
填坑中...
参考:
1.go mod 如何导入本地的包