$ go版本 1.13.3
我的文件夹结构如下:
GOPATH +---src +--- my-api-server +--- my-auth-server +--- main.go +--- my-utils +--- uuid +--- uuid.go
my-auth-server使用my-api-server/my-utils/uuid作为depenency
my-auth-server
my-api-server/my-utils/uuid
现在,当我使用基于GOPATH的模块系统时,它可以正常工作。但是当使用go模块时,当我go run main.go在my-auth- server其中运行时返回错误:
go run main.go
my-auth- server
build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element
知道如何解决这个问题吗?
该go.mod文件应位于项目的根目录(在本例中为my-api-server/go.mod)。
go.mod
my-api-server/go.mod
模块路径的第一部分应该是域/路径。例如,完整路径可能是github.com/your-github-username/my-api- server。您看到的错误是因为第一部分不是域(带有句点)。您不必发布模块来开发它,但是您需要使用适当的域名。
github.com/your-github-username/my-api- server
一旦有了模块路径,就可以使用完整的模块路径+“ /” +软件包的相对路径来导入该模块中包含的软件包。例如,
import "github.com/your-github-username/my-api-server/my-utils/uuid"
由于main.go和uuid包含在同一模块中,因此不需要require在go.mod文件中声明即可使用uuid包。您可以像导入其他任何软件包一样将其导入,它将起作用。
main.go
uuid
require
我建议使用go build并运行生成的可执行文件,而不要使用go run来确保在构建过程中包括了所有需要的文件。
go build
go run
有关如何使用Go模块的演练,请参见https://blog.golang.org/using-go- modules,包括该系列文章中的第二篇有关如何将项目转换为使用模块的文章。