go 1.16环境使用go mod同目录下导包

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 如何导入本地的包

posted on 2022-05-07 14:57  进击的davis  阅读(504)  评论(0编辑  收藏  举报

导航