问题标签 [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.
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(引用本地包后,加上包名前缀)
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
go - 开发多模块 Go 工作区的问题
我的文件夹结构看起来像这样......(假设我的 git repo 名称是 demorepo)
现在,我想在“newmodule”中使用“package1”中定义的函数
当我在“new_module”中点击 go get <repo_address>/directort1/module1/package1 时,它说....
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 上找到从这些文档推断包导入的规则?
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 模块中未使用的传递依赖项并将所有这些包保存在同一个模块/存储库中?
go - 找不到包 google.golang.org/grpc
当我尝试导入 grpc 包时,出现以下错误:
这是我的 gopath(以防有帮助):
我确实安装了这两个包:
但这似乎不起作用