我在使用 go 的新模块系统时遇到问题,因为我想定义一个本地模块并将其导入到主程序中。本地包位于主包/根文件夹的文件夹中。想象一下在$GOPATH
.
项目结构
./main.go
package main
import "fmt"
import "example.com/localModule/model"
func main() {
var p = model.Person{name: "Dieter", age:25}
fmt.Printf("Hello %s\n", p.name)
}
./model/person.go
package model
type Person struct {
name string
age int
}
在根文件夹中,我通过调用初始化了一个模块
go mod init example.com/localModule
然后在model/
文件夹中,我通过调用初始化子模块
go mod init example.com/localModule/model
错误
在根文件夹中调用以下命令失败。
$ go get
go build example.com/localModule/model: no Go files in
$ go build
main.go:4:8: unknown import path "example.com/localModule/model": cannot find module providing package example.com/localModule/model
go get 的错误信息被截断,我没有解析错误。
我不打算将模块推送到服务器,只是需要一种引用本地包的方式model
,所以我分别选择了example.com/localModule/
和example.com/localModule/model
。
我在go1.11 darwin/amd64
运行 MacOS 10.13.6 的 Macbook 上使用。