项目结构:
src
|----project
|----service
|----service.go
|----go.mod
|----go.sum
|----main.go
pgx模块用作模块,服务包是在屏幕上显示文本的常规包。这是内容service/service.go
:
package service
import (
"fmt"
)
func SomeFunction(text string) {
fmt.Println(text)
}
而main.go
这个包使用的内容:
package main
import (
"project/service"
)
func main() {
service.SomeFunction("Some text")
}
尝试编译时,它go build -o $GOPATH/bin/project
给出了一个错误:
build mod: cannot load project/service: malformed module path "project/service": missing dot in first path element
...或俄语:
невозможно загрузить project/service: неверно сформирован путь к модулю "project/service": отсутствует точка в первом элементе пути
为什么 Golang 认为我的服务包是一个模块?go.mod
毕竟,它没有在文件中指定:
module mod
go 1.13
require github.com/jackc/pgx/v4 v4.2.1 // indirect
我如何告诉 Go 服务包是常规包而不是模块?或者如果我在项目中使用模块,我是否必须将所有包都包含为模块?
模块名称应该看起来像一个链接,例如 go mod init github.com/path/to/module。我认为这样做是为了让 go get 正常工作。如果您不打算在任何地方上传您的应用程序,请写 example.com/you/module
有必要
go.mod
替换文件中的行在
因为我的项目叫做project,而不是mod。之后,错误消失。