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

如何导入项目特定的 go 包,同时为完全不同的项目通用的 go 包保留一个单独的位置?

如何导入项目特定的 go 包,同时为完全不同的项目通用的 go 包保留一个单独的位置?

Go
缥缈止盈 2021-12-20 19:15:14
所以我第一次开发了一个 go 应用程序。我开始知道有两个变量 GOROOT 和 GOPATH 用于维护 go 包。到目前为止,我的理解是 GOROOT 用于 go 二进制文件,而 GOPATH 主要用于存储项目所需的库和帮助程序包。这是我目前的项目结构 -/Users/john/work/project-mars/Users/john/work/project-mars/main.go/Users/john/work/project-mars/helper/Users/john/work/project-mars/helper/helper.gomain.go 的内容package mainimport (    "fmt"    "helper")func main(){    fmt.Println("Hello")}helper.go 的内容package helperimport (    "fmt")func SayWorld(){    fmt.Println("World")}而 go 变量是 -GOROOT = /Users/john/apps/goGOPATH = /Users/john/apps/go-packages问题: 现在,当我执行以下命令时,出现此错误 -mac-machine:project-mars john$ go build main.go main.go:5:5: cannot find package "helper" in any of:    /Users/john/apps/go/src/helper (from $GOROOT)    /Users/john/apps/go-packages/src/helper (from $GOPATH)我知道 GOPATH 应该是我正在处理的项目目录。但是我担心以模块化方式保持我的项目和库包,以便以后我有一个完全不同的项目(即项目极光)可能使用相同的 github 帮助包时,它们不会被下载两次,都在project-mars 和 project-aurora 。在处理不同项目时如何避免这种冗余?更新:并不是我不能编译它们。我可以使用 GOPATH 作为我的项目目录并使用 src、pkg、bin 项目布局,并重新组织文件并最终编译项目。伊伊皮。但我的问题是关于解决以这种单一的 GOPATH 方式出现的常见包问题的冗余。
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

请仔细阅读如何编写 Go 代码。它解释了您需要知道的一切。

您不用GOPATH作项目目录。假设您想使用标准的 Go 工具,您的包源需要位于与其导入路径对应的目录中,就像任何其他包一样。

您的项目应该位于$GOPATH/src/project-mars,可以通过go install project-mars. 该helper包应位于$GOPATH/src/project-mars/helper,并通过 导入"project-mars/helper"


查看完整回答
反对 回复 2021-12-20
?
三国纷争

TA贡献1804条经验 获得超7个赞

将您的helper-lib文件夹重命名为helper

然后把这个文件夹从project-mars移动到上层文件夹work

这应该使您的

import "helper"

main.go 工作中的语句。


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

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