如何在 Go 中删除不需要的导入别名?

How can I remove an unwanted import alias in Go?

我发现 Web https://github.com/deckarep/golang-set 中非常有用的 Go 库试图将 Python 设置为 Go。

感谢 Visual Studio 代码,我最终通过导入库 import "github.com/deckarep/golang-set" 并在我的代码中调用一个函数来让它工作:

mySet := mapset.NewSet()

VS Code 自动识别别名并替换导入指令:

import mapset "github.com/deckarep/golang-set"

然而,作为一个发现这些别名令人困惑的人,我试图将其删除但这样做,VSCode 将其从导入语句和我的代码中删除。然后 VS Code 告诉我:

undeclared name: NewSet compiler(UndeclaredName)

来自 NewSet(...) 的软件包名称也是 package mapset。所以我想我可以简单地删除它。但是没用。

我也尝试过类似于其他第 3 方包的工作,并通过存储库的名称调用函数:

mySet := golang-set.NewSet()

这也会导致错误。由于连字符的缘故,这里不可能删除别名,还是我在监督其他事情?

这里有几件事:

  1. mapset 是包名。您可以通过查看 package source code.

    来了解这一点
  2. 虽然从语言的角度来看,在这种情况下,导入别名并不是严格需要的,但为了清楚起见,添加了它,因为包名称 (mapset) 与导入路径不匹配(golang-set)。如果导入语句中没有别名,就无法判断包是如何被引用的。这就是为什么它在那里很重要。

  3. 您不能使用 golang-set 作为导入名称,因为导入别名中不允许使用 - 字符。但是,如果你真的想要,你可以使用 golang_set 或类似的,通过明确提供这个作为你的别名:

    import golang_set "github.com/deckarep/golang-set"
    

    请注意,这违反了命名约定,因为包名称中不应包含 _ 个字符。但它应该仍然有效。

  4. 最佳做法是使用 mapset 作为别名。它是所有可用选项中最不容易混淆的(这就是它被自动选中的原因)。