Golang一行循环

时间:2018-11-05 20:34:27

标签: for-loop go coding-style

我试图用for循环逐行读取Golang中的CSV文件,该循环需要一个带if语句的中断,以查看读取文件的错误是否为EOF。当我可以在Java中读取例如while条件循环中的行并同时检查EOF错误时,我发现此语法相当不必要。我认为可以在for循环中声明一个变量,而且我确定可以使用Golang中的if语句来做到这一点。正在执行:

if v := 2; v > 1{
    fmt.Println("2 is better than 1")
}

这里的第一段代码是我知道要在程序中工作的代码。

reader := csv.NewReader(some_file)

for {
    line, err := reader.Read()
    if err == io.EOF {
        break
    }
    //do data parsing from your line here
}

我不知道第二个摘录在概念上是否可行,或者在语法上只是不正确。

reader := csv.NewReader(some_file)

for line, err := reader.Read(); err != io.EOF {
    //do data parsing from your line here
}

想要一些说明/好处/惯例以一种方式进行,谢谢:)

1 个答案:

答案 0 :(得分:0)

这是写简单语句的常规方法,而不是冗长而复杂的语句,不是吗?

因此,我认为第一版比第二版更传统。此外,第二版中的for循环的方式不正确。如果您想使用它,请按照以下内容或您想要的任何方式对其进行修复:

for line, err := reader.Read(); err != io.EOF; line, err = reader.Read() {
    //do data parsing from your line here
}