问题标签 [go-packages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
87 浏览

go - VSCode 和 Golang 包和智能异常行为

我已经用 Brew 在我的 Mac 上安装了 Golang。所以它是最新和最伟大的。VS Code 是最新的。我已经从命令面板安装了最新的 Go 扩展和所有工具。

这一切似乎都奏效了。但是,当我尝试引用实用程序包时,我在 VSCode 中没有得到任何建议。我认为建议我的本地包会足够聪明example.go。如果这是一个错误的假设,请纠正我。

其次,由于没有通过智能感知的建议,因此我手动添加了导入,因为github.com/foo/go/obs它会自动在其前面添加包名称的前缀,从而导致:

我见过的每个教程都没有带有包名的前缀。为什么example要从虚拟 ns 中添加?想知道有没有我还没打的配置?

总体而言,似乎存在引用本地或外部包的问题。必须关闭 VSCode 然后重新打开它才能解决。

我必须有一些错误配置。

这是输出go env

我创建了一个简单的项目。A main.go、 ago.mod和我想在main.go

这是文件结构:

在此处输入图像描述

main.go(在引用我的本地包之前):

去.mod

例子.go

main.go(引用本地包后,加上包名前缀)

0 投票
0 回答
54 浏览

go - 包 event-service/internal/form 不在 GOROOT 中

我正在尝试运行go test -v -cover -race -tags=integration_tests ./...,但它给了我以下错误:package event-service/internal/form is not in GOROOT

GOPATH ="/home/user/go"

戈鲁特="/usr/local/go"

去版本go1.17.5 linux/amd64

0 投票
2 回答
126 浏览

go - 开发多模块 Go 工作区的问题

我的文件夹结构看起来像这样......(假设我的 git repo 名称是 demorepo)

现在,我想在“newmodule”中使用“package1”中定义的函数

当我在“new_module”中点击 go get <repo_address>/directort1/module1/package1 时,它说....

0 投票
0 回答
133 浏览

kubernetes - Kubernetes Go 客户端包路径

如何找到 Kubernetes Go 客户端的任何子包的确切路径是什么?

我对整个 Go 依赖项 ( go get k8s.io/client-go@latest) 感到困惑,因为我看到很多等价/相似V1或类似的V1beta1前缀XXX有时会在其他时候以我认为任意的方式出现恐慌。

但是,当我检查文档时,很难找到有关接口、结构定义和包名称的信息(我目前被阻止的东西)。

当我在多次点击后转到这里时:https ://pkg.go.dev/k8s.io/api@v0.23.1/core/v1#Container 那么我如何将此 URL 转换为 Go 包?它可能是Container结构的包,但对于任何其他“Kubernetes 事物”都是一样的。

查看https://github.com/kubernetes/client-go/blob/master/examples/out-of-cluster-client-configuration/main.go上的示例,我发现它们正在导入metav1 "k8s.io/apimachinery/pkg/apis/meta/v1",所以我尝试corev1 "k8s.io/apimachinery/pkg/apis/core/v1"了,但是编译器恐慌

所以我尝试go mod tidy了,但我得到了同样的错误。

我也试过"k8s.io/client-go/util/core"or "k8s.io/client-go/core"- 它不起作用,但必须有一个一致的规则来找出这些包名称。

我习惯于从 GitHub 存储库 URL 推断包名称,例如 importinggithub.com/kubernetes/client-go或类似的,但由于某种原因,在 Kubernetes 中,它们似乎没有以这种方式使用。

如何在https://pkg.go.dev的那些 URL 上找到从这些文档推断包导入的规则?

0 投票
0 回答
41 浏览

go - Go 模块排除传递依赖

我正在为多个外部 Go 依赖项制作适配器。一个根包在example.com/api. 其他子包位于example.com/api/adapters/<adapter-name>- 每个适配器都具有实现api包接口的结构,并具有外部库的外部依赖项。

在此处输入图像描述

它应该以这种方式使用:某些库(图中的“lib”)导入example.com/api并仅使用此包中的接口。一些最终应用程序(图中的“app”)使用“lib”包并依赖于example.com/api/adapters/<adapter-name>.

我负责 API 和适配器包(图中的虚线矩形)。所以我尝试以这种方式构建项目:

但这里的问题是,当我尝试制作示例“lib”和“app”模块并在“app”中使用“adapter1”时,该go.sum文件包含“app”中未使用的“adapter2”和“adapter3”的所有依赖项; 除了“app”定义了不必要的依赖之外,如果“app”想要使用“adapter-1”并使用与adapter-2和adapter-3相同的外部依赖,但版本不同,则可能会出现真正的问题。

我正在考虑将“适配器-{n}”包移动到单独的存储库并拥有包:

  • example.com/api
  • example.com/api-adapter-1
  • example.com/api-adapter-2
  • example.com/api-adapter-3

但这看起来像是开销,因为一些适配器非常小,可以放在一个文件中。

是否可以排除 go 模块中未使用的传递依赖项并将所有这些包保存在同一个模块/存储库中?

0 投票
1 回答
75 浏览

go - 找不到包 google.golang.org/grpc

当我尝试导入 grpc 包时,出现以下错误:

这是我的 gopath(以防有帮助):

我确实安装了这两个包:

但这似乎不起作用