【问题标题】:Simple integer declaration in GolangGolang 中的简单整数声明
【发布时间】:2017-07-09 23:52:17
【问题描述】:

我不认为自己是新手,但我不明白为什么这个非常简单的代码 sn-p 无法声明我的整数。

func main () {

    var totalResults int

    rFile, err := os.Open("users.csv") //3 columns
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer rFile.Close()

    // Creating csv reader
    reader := csv.NewReader(rFile)

    lines, err := reader.ReadAll()
    if err == io.EOF {
        fmt.Println("Error:", err)
        return
    } else {

    }

    totalResults=len(lines)

}

总是说值没有声明,这似乎太简单了。

我很确定如果我使用:= 声明它会起作用,但我想在函数顶部声明所有内容。

【问题讨论】:

  • 为什么要在函数顶部声明呢?通常,除了 JavaScript 之外的每种 c-ish 语言的大多数样式指南都建议声明变量尽可能接近其使用点。直接说var totalResults int = len(lines)
  • 我无法重现此错误。
  • 事实上,我用这段代码得到的错误是totalResults 已声明但未使用。你确定你没有误读你的错误信息吗?

标签: go undeclared-identifier


【解决方案1】:

更改您的代码:

lines, err := reader.ReadAll()
if err == io.EOF {
    fmt.Println("Error:", err)
    return
} else {

}

    totalResults=len(lines)

}

到:

    lines, err := reader.ReadAll()
if err == io.EOF {
    totalResults=len(lines)
} else {
    fmt.Println("Error:", err)
    return
}
    fmt.Println("total results:", totalResults)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    相关资源
    最近更新 更多