【问题标题】:How to prevent GoLand from deleting "github.com/fxamacker/cbor/v2" on save?如何防止 GoLand 在保存时删除“github.com/fxamacker/cbor/v2”?
【发布时间】:2022-06-24 22:17:55
【问题描述】:

一些 Go 文本编辑器和 IDE(在我的特殊情况下是 JetBrains 的 GoLand IDE)会在保存时自动删除未使用的导入。这通常是一件好事,因为 Go 编译器会为未使用的导入抛出错误。

但是,在 github.com/fxamacker/cbor/v2 导入的情况下,我相信 GoLand 会被最后的 v2 弄糊涂,并认为从未使用过导入,因为文件中的任何地方都没有任何 v2.<something>。所以 GoLand 在我保存时删除了这个导入,但是我的文件无法编译,因为我需要的导入已经消失了。

我想我可以用一个前导下划线来解决这个问题,像这样:

import (
        // ... other imports here ...
        _ "github.com/fxamacker/cbor/v2"
)

当我进行此更改时,GoLand 不会删除我的导入,但是当我编译时出现错误:

redacted.go:15:10:未定义:cbor redacted.go:19:13:未定义:cbor redacted.go:20:17:未定义:cbor redacted.go:109:8: 未定义: cbor

如何导入此模块,以使导入不会被 GoLand 自动删除,并且文件仍然可以编译?

【问题讨论】:

    标签: go go-modules goland


    【解决方案1】:

    我发现我可以这样做:

    import (
            // ... other imports here ...
            cbor "github.com/fxamacker/cbor/v2"
    )
    

    然后 GoLand 可以看到导入正在使用中,并且 Go 仍然有模块的名称,因此它可以编译代码。

    我的问题中我的下划线方法的问题是 Go 没有模块的名称,这导致它无法识别文件中的 cbor.something

    【讨论】:

    • Go 看到包的名称,它必须看到,否则它不会编译。该包名为cbor,但如果 GoLand 无法识别这是 GoLand 中的错误。
    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多