我对Golang有一些关于导入本地软件包的问题。这是我的项目结构
home/src/github.com/username/project1
|main.go
|go.mod
├── handlers
│ ├── handlers.go
├── usecases
| ├─ ...
|...
我go.mod
module project1
go 1.16
我main.go
package main
import (
"fmt"
"net/http"
"project1/handlers/handlers"
)
func main() {
http.HandleFunc("/", handlers.Greet)
http.ListenAndServe(":8080", nil)
}
我handlers/handlers.go
package handlers
import (
"net/http"
"fmt"
)
func Greet(w http.ResponseWriter, r *http.Request) {
//Do stuff
}
我正在GOPATH之外构建这个,我正在使用go 1.16。C:\users\...\go
在阅读了一些来源之后,说我只能使用模块名称和包的路径来导入包,我使用此行将包导入到包。handlersmain
import "project1/handlers/handlers"
但是当我尝试运行它时,这将返回此错误。
package project1/handlers/handlers is not in GOROOT (C:\...\project1/handlers/handlers)
然后我尝试更改一些东西,例如将我的模块名称和导入路径都更改为此
//module name in go.mod
module github.com/username/project1
//import path in main.go
import "github.com/username/project1/handlers/handlers"
但是然后它返回错误,说我需要首先获取包,当我尝试使用该命令获取它时,或者只是返回错误,因为我没有推送/发布这个项目,我不打算这样做。go get github.com/username/project1/handlers/handlersgo mod tidyrepository not found
那么,我在这里犯的问题/错误是什么?我必须先发布项目,然后才能导入自己的本地包吗?我是否错过了一些配置?每一个帮助都是值得赞赏的。
慕桂英4014372