一个module中可以包含多个package,使用go.mod来进行管理

一个workspace中可以包含多个module,使用go.work来进行管理

使用go mod 与go work来新建一个本地的多module项目

示例如下图,新建一个含有三个module,一个是含有main package的module,另外两个是各自含有package1,package2两个package的module。

 

 在每个模块下新建各自的go.mod(在各个模块目录执行go mod init mainModule, go mod init module1, go mod init module2),然后在项目目录新建go.work(go work init ./mainModule ./module1 ./module2)

main.go 与package.go的代码如下:

package main

import (
	"fmt"
	p11 "module1/package1"
	p12 "module1/package2"
	p21 "module2/package1"
	p22 "module2/package2"
)

func main() {
	fmt.Println("main")
	p11.Package()
	p12.Package()
	p21.Package()
	p22.Package()
}
package package1

import (
	"fmt"
)

func Package() {
	fmt.Println("module1 package1")
}

在main.go同级目录下执行go run main.go结果如下: