gpt4 book ai didi

即使文件存在,通过 github.com repo 的 Golang 本地导入也不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:48 25 4
gpt4 key购买 nike

我确实知道 Go 对于导入来说很古怪,但我已经尝试(我相信)遵循约定,但是我无法导入结构。

项目结构:

/project-name
/parser/main.go
/query/main.go
... Project files in root

我在 /parser/main.go 导出了一个结构:

package parser
type SomeTranslationStuff struct {
ID int `json:"Id"`
Language string `json:"Language"`
}

我希望在 /query/main.go 中导入它。

我是这样做的:

import (
"github.com/org/project-name/parser"
)

它不导入它 - 我遇到了“在 Gopath 中找不到包......”。

我的项目存在于:Users\user\go\src\project-name。导入的项目(这是同一个项目,通过 go get 从 github 导入)确实存在于 Users\user\go\src\github.com\org\project-name.. 一切似乎都符合到导入东西的“Go”方式,但它似乎没有导入?

它具体说:

Cannot find package name:
C:\Users\user\go\src\github.com\org\project-name\parser(from $GOPATH)

如果我走那条路,项目就在那里!是什么赋予了?为什么不导入?

最佳答案

一个包有两个东西:

  1. 一个名字。这是由 package thename 声明设置的。
  2. 导入 路径。这个路径是相对于 $GOPATH/src 的。

你应该(这里没有争论)做以下事情:

  1. 名称导入 路径 的最后一个组件应该匹配。例如。如果导入路径是“sun/moon/stars”而不是包名是“stars”。 (很多人都弄错了,要么将包或文件夹称为 go-stars 之类的东西。不要那样做。)

  2. 磁盘上的文件夹结构必须与包的导入路径相匹配。如果您的包的导入路径是“whatever/random/noise”,您必须将它放在 $GOPATH/src/whatever/random/noise 下。或者反过来说:如果你的代码在 $GOPATH/src/ill/do/it/my/own/way 那么包“way”的导入路径是“ill/do/it/my/own/way ".

  3. 如果您希望您的包能够go get将其放置在已知的代码托管上并通过完整的导入路径导入它。可能会限制导入路径。将包“foo”的代码放在 $GOPATH/src/github.com/you/repo/whatever/deep/folder/structure/foo 下并使用 import "github.com/you/repo/whatever/deep/文件夹/结构/foo"

  4. 您所有的路径和包名称都应全部小写。

归结为:不要做任何花哨的事情,保持自然。导入路径和文件夹结构必须匹配。

关于即使文件存在,通过 github.com repo 的 Golang 本地导入也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com