如何将此语句的输出写入Golang中的文件

Tba*_*alz 9 io file go

我正在尝试将下面语句的输出写入文本文件,但我似乎无法找出是否有一个直接写入文本文件的printf函数.例如,如果下面的代码产生结果[5 1 2 4 0 3],我想将其读入文本文件以进行存储和持久化.有什么想法吗?

我要转到文本文件的代码:

//choose random number for recipe
r := rand.New(rand.NewSource(time.Now().UnixNano()))
i := r.Perm(5)
fmt.Printf("%v\n", i)
fmt.Printf("%d\n", i[0])
fmt.Printf("%d\n", i[1])
Run Code Online (Sandbox Code Playgroud)

syn*_*gma 15

您可以fmt.Fprintf与a一起使用io.Writer,它将代表您文件的句柄.

这是一个简单的例子:

func check(err error) {
    if err != nil {
        panic(err)
    }
}

func main() {
    f, err := os.Create("/tmp/yourfile")
    check(err)
    defer f.Close()

    w := bufio.NewWriter(f)
    //choose random number for recipe
    r := rand.New(rand.NewSource(time.Now().UnixNano()))
    i := r.Perm(5)

    _, err = fmt.Fprintf(w, "%v\n", i)
    check(err)
    _, err = fmt.Fprintf(w, "%d\n", i[0])
    check(err)
    _, err = fmt.Fprintf(w, "%d\n", i[1])
    check(err)
    w.Flush()
}
Run Code Online (Sandbox Code Playgroud)

这里显示在Go中写入文件的更多方法.

请注意,我在panic()这里只是为了简洁起见,在现实生活中你应该适当地处理错误(在大多数情况下,这意味着除了退出程序之外的其他东西panic()).


End*_*imo 5

此示例将把值写入output.txt文件中。

package main

import (
    "bufio"
    "fmt"
    "math/rand"
    "os"
    "time"
)

func main() {

    file, err := os.OpenFile("output.txt", os.O_WRONLY|os.O_CREATE, 0666)
    if err != nil {
        fmt.Println("File does not exists or cannot be created")
        os.Exit(1)
    }
    defer file.Close()

    w := bufio.NewWriter(file)
    r := rand.New(rand.NewSource(time.Now().UnixNano()))
    i := r.Perm(5)
    fmt.Fprintf(w, "%v\n", i)

    w.Flush()
}
Run Code Online (Sandbox Code Playgroud)