在没有解释的情况下在 Goland 下划线

Jon*_*nyD 4 go goland

Goland 在 err 变量中显示下划线,但没有解释下划线原因的原因/没有工具提示(见下图——箭头指向奇怪的下划线)。 Goland 中的代码,带有 err 下划线

有谁知道下划线的原因?

(这似乎不是因为 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
}
Run Code Online (Sandbox Code Playgroud)

Jen*_*ens 5

带下划线的变量不是错误指示符。是的Goland通知你,你是重新分配err变量。

您首先在此处创建变量:

err := GetSomething()
Run Code Online (Sandbox Code Playgroud)

然后在该行中重新分配相同的变量:

currentDirectory, err := os.Getwd()
Run Code Online (Sandbox Code Playgroud)

err就是下划线的原因。不是错误,只是为了让您更清楚这一点。

有时,重新分配变量是不可取的,因为它可能会产生不需要的副作用。

In this particular case, I think it is a common Go pattern to have a single err variable and re-use it throughout a function/method.