go - 在 Golang 中错误下划线,无需解释

标签 go goland

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

11 个月前关闭。




Improve this question




Goland 在 err 变量中显示下划线,但没有解释下划线原因的原因/没有工具提示(见下图——箭头指向奇怪的下划线)。
the code in Goland, with err underlined
有谁知道下划线的原因?
(它确实 而不是 似乎是因为 err 是在上面几行定义的,因为我在其他文件中也有类似的 err 重用,并且它们中没有下划线)。
这是代码,尽管如果没有来自 IDE 的解释图片,这个问题将毫无意义,因为这似乎是 Goland 中的一个错误。

package mypack

import (
    "fmt"
    "os"
)

func SomeFunc() (string, error) {
    err := GetSomething()
    if err != nil {
        return "", fmt.Errorf("some err")
    }

    currentDirectory, err := os.Getwd()
    if err != nil {
        return "", fmt.Errorf("error getting current dir. %v", err)
    }

    return currentDirectory, nil
}

func GetSomething() error {
    return nil
}

最佳答案

带下划线的变量不是错误指示符。 GoLand 通知您您正在重新分配 err多变的。
您首先在此处创建变量:

err := GetSomething()
然后在该行中重新分配相同的变量:
currentDirectory, err := os.Getwd()
这就是为什么 err下划线。不是错误,只是为了让您更清楚这一点。
有时,重新分配变量是不可取的,因为它可能会产生不需要的副作用。
在这种特殊情况下,我认为只有一个 err 是一种常见的 Go 模式。变量并在整个函数/方法中重复使用它。

关于go - 在 Golang 中错误下划线,无需解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64892220/

相关文章:

Goland无法将字符串类型的表达式转换为类型[]byte

go - 在 Go 中处理依赖关系

go - 运行 "go get github.com/libp2p/go-libp2p"导致错误消息

go - 无法构建具有外部模块本地副本的项目

goland - 在项目 View 当前文件中显示的快捷方式是什么?

go - 在fmt和GoLand中突出显示语法

Golang 未使用类型(但已使用)

forms - 从表单导入 CSV 文件并使用 GO 解析结果

gooroutine 有没有优先级?

sql - Goland 可以使用其他 SQL 包自动完成 SQL 语句吗?