一、文件架构
.
├── go.mod
├── go.work
├── main
│ └── main.go
└── util├── go.mod└── util.go
其中go.mod
module testgo 1.21.0
其中go.work
go 1.21.0use (../util
)
main/main.go
1 package main 2 3 import ( 4 "fmt" 5 "uuu" 6 ) 7 8 9 func main() { 10 a := utils.Add(1, 3) 11 fmt.Println(a) 12 }
util/go.mod
1 module uuu 2 3 go 1.21.0
util/util.go
1 // util.go 2 package utils 3 4 import "fmt" 5 6 func Add(a int, b int) int { 7 return a + b 8 } 9 10 func init(){ 11 fmt.Println("hahahah") 12 }
执行后:
┌─[zhaoky@zhaoky]─[~/Desktop/kaiyue/module]
└──╼ $go run ./main
hahahah
4
需要注意的是,在go.work中添加了子模块的路径,否则在main.go 中会报错如下
┌─[zhaoky@zhaoky]─[~/Desktop/kaiyue/module]
└──╼ $go run ./main
main/main.go:5:2: package uuu is not in std (/usr/local/go/src/uuu)