问题标签 [goimports]

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 投票
1 回答
1946 浏览

go - 如何禁用删除未使用的导入?

我使用goimports自动重新格式化我的代码并使其干净并保持导入顺序。但有时它与 IDE 自动保存一起以一种不舒服的方式工作。就像在这种情况下:

  1. 我想在我的代码中添加新包。

  2. 然后我安装它dep ensure并刷新我的 IDE 缓存。

  3. 我可以轻松地使用带有 IDE 自动完成和导航的包。

goimportsIDE会发生什么?

  1. 我添加新包
  2. 为了运行,dep ensure我必须保存一个文件
  3. goimports找到未使用的包并将其从导入中删除。不好。

解决方法:

A. 手动添加新包dep ensure -add %packagename%

B. 禁用goimports并移动到gofmt-马马虎虎。

C. 不要在保存时自动格式化代码 - 不受欢迎。

如何设置更方便?

PS不确定标签godeps,但DEP在这里肯定是错误的。

0 投票
1 回答
182 浏览

go - 如何强制 VSCode 要求手动选择 goimports 匹配多个具有相同名称的包?

我刚刚遇到了使用 Go Iris 框架编写小型 Web 服务的问题。Iris 几乎没有用于 HTTP 请求错误处理的有用包。

也就是说,我想使用“github.com/kataras/iris/middleware/logger”“github.com/kataras/iris/middleware/recover”但是当我开始输入 app.Use(logger....) VSCode auto导入的“ github.com/hashicorp/consul/logger ”也在我的路径中。

简单地复制粘贴正确的路径就可以解决这个问题,但是有没有办法强制 VSCode 在多个包名称匹配的情况下进行手动选择,甚至在这些情况下完全禁用 goimports。

下面的例子:

0 投票
1 回答
1783 浏览

go - goimports 未检测到本地包

我的 golang 项目在不同的文件夹中有几个包,这些包变得有点大。我一直在尝试创建单独的包,但没有被 goimports 检测到

我的目录是这样的,

在我的 math.go 文件夹中,我有包实用程序

但是当我尝试做import "application/utility"或尝试在我的 main.go 文件(在应用程序文件夹中)中包含 math.go 文件中的公共函数时,我得到未定义的......

我究竟做错了什么?

0 投票
0 回答
828 浏览

go - 如何通过“go get”使用仅二进制包

go get我的二进制包从命令安装了一些依赖项。在构建并创建源代码之后//go:binary-only-package

有一些错误,例如:

如何导入仅二进制包?

0 投票
2 回答
720 浏览

go - 如何以编程方式检索声明给定类型的包路径?

我正在寻找一种方法来检索本地安装的包,其中包含给定类型的声明和默认包名称。

IE:

我可以尝试检索所有已安装的包,并在每个查找声明时通过 AST,但如果有一个解决方案可以更有效地做到这一点,同时还提供对 go 模块的支持,我想使用它。

这样做的原因是为了改进代码生成工具。这个想法是让用户提供类型的名称,并让工具识别最有可能的候选者,就像 goimports 添加缺失的导入一样。

0 投票
0 回答
326 浏览

go - 使用标准库的 fork 来修补 go/ast

我修复了一个小错误go/ast(请参阅以下Github 问题)。我想已经在我正在开发的项目中使用我的修复。包含该修复的 fork 可在https://github.com/ec-m/go上找到。

首先,我尝试了以下导入:

这导致了各种go get错误,例如module github.com/ec-m/go/src@upgrade found (v0.0.0-20200626183851-7b0f14cb18cb), but does not contain package github.com/ec-m/go/src/go.

然后,我按照https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive中概述的使用分叉依赖项的常规方法, 并在各种问题中提到,f . 前任。如何修复解析 go.mod 模块将其路径声明为 "x" 但需要为 "y"

具体来说,我在我的go.mod

这和其他一些尝试(std而不是go/ast等)没有奏效。经过一番研究,我发现替换 Go 的标准库是不可能的(参见这个Github 提案)。

我还有什么其他选择可以使用我的 Go 标准库的分支?我希望该方法尽可能简单,以避免我项目的未来用户出现依赖问题。

0 投票
1 回答
73 浏览

go - 如何让 Go 搜索 GOROOT 之外的导入

我正在将 dep 项目迁移到 go 模块中,并且该项目中的一些 Go 文件导入了 proto 文件,但是当我执行时go mod tidy,它说找不到 proto 文件所在的包。项目结构:

我在repository.go中像这样导入

我有这个:

如何导入这些文件?

0 投票
0 回答
228 浏览

hyperledger-fabric - 文件包含 goimports 错误

我正在尝试按照教程为 hyperledger fabric 2.2.1 构建开发环境,并且我从这里获得了源代码。我已经安装了开发工具,没有任何问题,但是在验证构建环境的过程中,我遇到了 goimports 错误。当我make basic-checks为执行许可证、拼写、尾随空格和 linter 的基本检查而运行时,我收到bccsp/pkcs11/pkcs11_test.go文件的 goimports 错误。以下是我对上述命令的日志。

所有文件都被排除在许可证头之外构建 github.com/client9/misspell/cmd/misspell -> mispell fatal: bad revision 'HEAD' fatal: ambiguous argument 'HEAD^..HEAD': unknown revision or path not in the working树。使用 '--' 将路径与修订分开,如下所示:'git [...] -- [...]' 检查更改的 go 文件是否存在拼写错误... xargs: mispell: No such file or directory spell checker通过检查 go:generate parent path references 致命:不明确的参数“HEAD”:未知修订或路径不在工作树中。使用 '--' 将路径与修订分开,如下所示:'git [...] -- [...]' Checking trailing spaces ... DEP: Checking for dependency issues.. ./scripts/check_deps.sh构建 golang.org/x/tools/cmd/goimports -> goimports LINT:

我无法在该文件中找到问题所在。

0 投票
1 回答
169 浏览

go - 需要帮助理解 Golangs 包和模块系统的困惑

老实说,Golang 的包和模块系统是我处理过的最令人恼火和不必要的复杂的事情。我不知道是否只是我不理解,缺乏关于这个主题的信息,或者只是一般的 golang。

我创建了一个 Go 项目,我还不想发布或上传到 GitHub。它不在我设置的 GOPATH 内,因为根据我对引入模块的理解,您可以在 GOPATH 之外对项目进行编码。项目布局是这样的

test.go希望我能做类似的事情,import "project/pkg1"但我不明白如何让它工作。即使我test.go在项目内部移动并输入,import "/pkg1"我也会收到Cannot import absolute path错误。

我真的不想一直在里面编写我所有的 go 项目%GOPATH%/src,这样做似乎很荒谬。

同样,这可能只是我不理解。我来自 pythonic 背景,我可以创建一个setup.py文件,在运行后将我的项目安装到 python 的路径以供将来使用。任何有关此的帮助,无论是指向教程或网站的链接,都将不胜感激,谢谢。

0 投票
1 回答
117 浏览

go - 如何在 golang 中导入生成的 SDK?

我使用openapi-generator分别生成多个 SDK 并将其放在同一个父目录中:

我希望能够bar-api在我的客户端代码中导入。最初有 bar-apigo.mod生成为:

但我无法修复客户端代码中的导入:

所以我所做的是:

即,创建sdks/go.mod

并手动编辑 bar-apigo.mod以:

有没有更好的方法来解决它?这个似乎工作,但这个替换看起来有点hacky。