文章目录
本地包位于同一个项目下
要调用的本地包位于包内,但不是同一个包名
目录结构
D:.
│ go.mod
│ main.go
│
└─mymod
sayhimod.go
其中 sayhimod.go
的包名为 mymod
,main.go
的包名是 main
(和 go.mod
中的 module
相同)
sayhimod.go
package mymod
import "fmt"
func SayHi() {
fmt.Println("Hi")
}
go.mod
module main
go 1.16
main.go
package main
import (
// 本地包的引用路径:外层文件的 go.mod 的名字/子目录的包名
"main/mymod"
)
func main() {
mymod.SayHi()
}
本地包与项目包同级
目录结构
D:.
├── testmod
│ ├── go.mod
│ └── main.go
└── testmod2
├── go.mod
└── mod2.go
其中 testmod2
是未上传到任何网站和远程库的本地包
/testmod2/go.mod
module testmod2
go 1.16
/testmod2/mod2.go
package testmod2
import "fmt"
func SayHi() {
fmt.Println("Hi")
}
/testmod/go.mod
module main
go 1.16
require "xxx.com/xxxfile/testmod2" v0.0.0
replace "xxx.com/xxxfile/testmod2" => "../testmod2"
因为 testmod2
并未上传到任何网站(如 github.com),所以我们通过 replace 的方式来引用本地包,更多关于 go mod
的知识,点击这里
/testmod/main.go
package main
import (
"xxx.com/xxxfile/testmod2"
)
func main() {
// 通过包名来调用包内的方法
testmod2.SayHi() // Hi
}