如何在golang中的txt文件中编写循环的输出

时间:2018-07-14 20:30:40

标签: go

我是新手,我想知道,如何在golang的txt文件中为我的代码编写循环的输出

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {

    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Printf("%d ", i)
        file, err := os.Create("result.txt")
        if err != nil {
            log.Fatal("Cannot create file", err)
        }
        defer file.Close()

        fmt.Fprintf(file, " x equal to %d", i)

    }

}

但是我得到9而不是1 3 5 7 9 那么如何解决这个问题

1 个答案:

答案 0 :(得分:2)

问题是您在循环的每个迭代中都在重新创建文件,这就是为什么文件中唯一的值是您在循环中写入的最后一个值。

尝试以下

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {
    file, err := os.Create("result.txt")
    if err != nil {
        log.Fatal("Cannot create file", err)
    }
    defer file.Close()

    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Printf("%d ", i)
        fmt.Fprintf(file, " x equal to %d", i)
    }
}