为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我无法在同一模块中导入包?

为什么我无法在同一模块中导入包?

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

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我在导入路径中放置了太多的路径,它应该停在目录而不是包上。因此,通过将导入路径更改为


import "project1/handlers"


//rather than

import "project1/handlers/handlers"

修复了问题。谢谢!


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信